I have been a devotee of Linux for nearly 15 years. I have faithfully followed first redhat, and now the fedora releases. All my PCs at least dual-boot, if not run native Linux all the time. I even TAUGHT Linux for a major computer company for a while. In my informally gathered experience, there are three things holding Linux back-
1) The cult of UNIX mentality - this is a belief, deeply held by many OSS fans, that it is morally wrong to make software easy to use. If it was hard to code, it should require effort from the user to make use of it, otherwise how will they appreciate your hard work? Microsoft on the other hand got it a loooong time ago. Ease of use isn't just nice to have, it is the one overiding factor that outweighs all others in software design. Flexibility just confuses most users. security is a sick sad joke that only security wonks care about. Until the Linux community embraces the overwhelming truth that ease of use is ALL that matters, they will be doomed to be a hobby OS for out-of-touch tech weenies.
2) Endlessly re-inventing the wheel. I think Redhat/ Fedora is now on their third version of the X-windows package, and there is talk of scrapping the whole thing for a new windowing paradigm. Every six months I do a version upgrade, and my desktop breaks, my icons disappear, my scripts stop working because the directories have changed. For the love of sanity PLEASE knock it off. If it ain't broke, DON"T FIX IT!!! If you want people to really use Linux, focus on a consistent user experience, keep the magic behind the curtain, and stop screwing up the user interface.
3) Fear of licenses. Every time I upgrade fedora, I have to spend hours getting my Xine video player, web browser, and games to work again. Give up the insanity guys. The world is not going to change to suit your whiny childish prejudices. There's all kinds of industry standard free software out there that EVERYONE uses. You are just marginalizing Linux by not supporting it in your distros.