I have a partition with Linux Mint (A more refined, nicer Ubuntu derivative), which I use occasionaly! I've tried at various points using Linux as my main OS, and every time, have found it just-not-quite-ready, though it's getting very close now. All it really needs is a little more developer support, a slightly more polished UI, and less dependancy-hell. (Seriously, if a package needs a paticular library which is fairly obscure, it should probably just come with it. If the user's already got it installed, it can always just not install it).
What may also help Linux is a unified GUI toolkit, or at least some sort of front end that would implement both GTK and Qt and have them looking the same. I'm sure there was a Qt->GTK wrapper at some point. Some more work on that, and having it included and enabled by default would definately have things looking a bit less all-over-the-place in Ubuntu.
Another problem with Linux as I see it is that it's got no real standardized API. There's a multitude of gui toolkits, as I already mentioned, a whole slew of different graphics APIs and a multitude of different sound servers, each with their own libraries. It's a bit of a mess really, and there's no one way to write Linux programs. Although this does give the developers plenty of options, it gives the end users a headache when it comes to dependancies, and causes a lot of inconsistancies between the way applications look and feel. I'm at risk of repeating myself here, but Linux developers could do with agreeing on a standard set of libraries to implement graphics, gui and sound.
I'm not saying Windows is perfect on this front either, but it's a hell of a lot better. Sure, there's the choice between OpenGL and Direct X, OpenAL and DirectSound, but the end result isn't nearly half as muddled, and most applications come out looking and behaving constitantly.