Linux's biggest issue with replacing windows is usability. Even if a person's first PC was a linux machine, it would still be far more complicated for the average user. Take for example installing a program in fedora, vs installing it in windows.
Fedora you typically have to start terminal, then change to root (unless you've already set up your account as having root privileges, which takes another dozen steps) then type in an obscure command referencing the file and quite often more files available off the internet. Then a large amount of cryptic information appears which if you're not quite good with linux commands are absolutely useless if the prog fails to install properly, as can quite often be caused by something so simple as a typo.
Windows you slap the disc in and a windows appears with the word "Install" on it.
There's also marketability (Dunno if that's even a real word) for linux/windows.
If you make a piece of software for windows, 90% of all PC's in america can use it. You make one for linux, you're looking at about 5% or so. That 5% marketshare makes it rather unprofitable for companies to design software for linux, or even to make it compatible. Due to it being open source, even OpenGL has fallen behind directX.
Finally there's support as someone said earlier. And that's not just from an end user standpoint, that's from a developer's too. With windows while developing software, you have a multi billion dollar company providing round the clock world wide product support. With most editions of linux, you get forum support and a wiki entry.
I'm neither a lover or a hater of Windows nor of Linux, both have issues people don't want to admit to, or else want to overhype. I Would love to see Linux atleast grab a good chunk of the marketshare as Microsoft holds a virtual monopoly, and really has little incentive to improve their software.
Linux needs to first improve it's user interface. Make it more automated and simplistic for the average user, but leave the option in there to truly customize it by advanced users (IE. to turn off those automated services). Then it needs to work on getting more developers to work with linux or provide linux support. Which isn't likely to happen with linux being opensourced, since GETTING that support will require a company that can fully back their software and make the calls, the marketing and the effort required to convince these companies it would be profitable to offer linux compatibility.