Those are all good, valid reasons for the low adoption of Linux on the desktop. I'd like to suggest another: the variety of distros, especially the different desktops. While great on a technical level, this fragments the market. There should be one "standard" or "default" Linux that is promoted above all others. It should have the best support of them all too and then, perhaps Linux can finally start competing with Microsoft on the desktop.
I know this isn't 100% the same situation, but look at how well it worked on smartphones. Microsoft tried to break into this market and had a decent product, but Android crushed it into oblivion and Android is just Linux for smartphones. We need something like this for the desktop.