I think that the most difficult thing about Linux is getting people onto the system.

1) Not everyone knows of an alternative to Windows and may not even know about Macintosh (let alone Linux).

2) People are comfortable with Microsoft Windows (most people that is) and any issues it may have. To them, it is a predictable experience.

3) Even though this no longer the case realistically, Linux is still seen as a complex, technical OS. People may know what Linux is, but may not have a clue on how it's operated.

4) Linux defies the conventional design of an Operating System. Linux alone is just a kernel with some GNU utilities. Whereas Microsoft Windows and Mac OS X is everything up to and including the Desktop. Linux can be packaged in such a way that it is as cohesive, but this has caused difficulty for people who are looking in at Linux as this has spawned countless incarnations. This allows for a more personalized experience and I believe the distro-based design of Linux is better for the user in the long-run, it's not what their used to. That doesn't mean that Linux should consolidate as that would ruin it's future. A consistent core and open (i.e. the Linux kernel) that would support multiple forms of hardware on the Desktop, but still having the ability to change and model the user experience based on the distro's maintainer. Therefore, the level of compatibility sky-rockets, as the user experience can be different across many distros, but all of those incarnations of the user experience can have the same low-level software support.