I have yet to meet a Linux distro that I consider fully working.
Seriously.
Let's start with sound. Right now I'm using an Ubuntu desktop with an Audigy 2 NX. The system recognizes it as a sound card, I can even plug it in while the system's running and it'll work. Did that right out of the box, right?
Nope.
Apparently, sound starts with ALSA. This handles the soundcard->program interface. Then, there's an OSS emulation layer, for the sound system that has been deprecated for 3 years or so. Then, there's the 'enlightened sound daemon', which Gnome uses for its system sounds, and seems to seize control of ALSA/OSS/whatever the hell it's called.
Why on earth everything doesn't simply use ALSA, I have the foggiest.
To get my soundcard to become the primary, over my built-in sound, I first had to edit a modules.conf file with a hack. Then, I had to spend hours learning how to and writing about 5-10 lines to tell ALSA to automatically resample to 96000hz, because apparently nobody noticed the severe crackling and distortion that results from sound being sent to the card in anything other than 22, 48, or 96 khz. Finally, if I forget to turn it on when I turn on my computer, I have to unmute the card (Usually I open up the console ALSA mixer, because the GUI one is worthless).
Next I'd have to set OSS, ESD, and everything else to use my virtual ALSA device that resamples. However, I chose to change each individual device to send sound to my virtual ALSA device...this has further restricted my program selection in some cases.
For games, apparently, OpenAL sits on top of ESD. I set that to use ALSA as well.
Finally, I have my soundcard giving me decent sound. Although it's still not as good as in Windows.
Now, in order to play MPCs, I have to use beep-media-player as I've never gotten support working under XMMS. It still crashes half the time due to some bug. Ubuntu also doesn't support the MPC plugin, so I had to compile and checkinstall it by hand.
In order to play MODs, I have to boot up XMMS.
Fortunately, both can play OGGs and MP3s.
In order to play movies, or DVDs, I have to open xine or Totem. Xine also has the habit of suddenly closing whenever I close certain dialog boxes, so often times I end up dragging-and-dropping files and can't use it's playlist functionality.
The fun thing about software is that with so many different distros running around, there have to be pretty much equal numbers of package versions due to the difference between directory structure and such. In the end, you usually have to compile from source to get the latest update of programs.
Not to mention that most programs are either bug-ridden or half-functional...if you combined three Linux programs, you might get the equivelant of one Windows one.
I'd like to recompile my kernel, except there are three different sets of instructions on how to do it on the Ubuntu wiki. God knows how many there are on the forums. My attempts at it have resulted in, at best, a kernel panic.
And just recently, I learned that my partitions are apparently corrupt, I did them all with the Ubuntu installer partitioner. Here I must commend Linux for gparted, and qtparted, because they're pretty functional and easy-to-use graphical partitioners. If only the engine didn't create corrupt ones...
Linux is also touted as the system of development, and the reason that it's so difficult to use is because the people who use it are so capable and computer-literate. However, VC++.NET is just worlds better than trying to do the same thing with gdb, gedit, g++, makefiles, etc etc. The customizability is nice, but when you're talking about using over six different programs to code and release a program, that's just absurd. I've tried anjuta, but never figured out how to get it to integrate with these programs, not to mention that it likes to pollute my source with a half-dozen makefiles and READMEs. Even starting an MFC project isn't so bad under Windows.
There are probably dozens of little annoyances that I'm forgetting; I could probably write a 10-page paper on the problems I've run into on Linux that I wouldn't have run into on Windows, with a summary of what I did to fix it.
But the lesson in all of this is, unless someone is extremely determined or basically forced to use Linux, and have a lot of time, it simply won't be a viable choice for an OS if they do anything past web browsing and word processing (Although I have yet to get network printing to work, and haven't tried much beyond that...)