Dividing out compute functions into mobile devices might have been the key to this happening. Tablets/smartphones do a lot of the leisure activities associated with computers, and can do some of the minor business features too.
This means that, increasingly so, the market for desktop computers will be for heavy business uses, and for heavy gaming. The marginal stuff will move to mobile as it's able to.
The day the Linux desktop comes is when it becomes easier for the majority of people to use Linux in the office than the alternative.
So, how is that going? What are some of the heavy-use applications that will likely never move away from a desktop computer?
Office applications - Openoffice and libreoffice are considered a viable alternatives to Microsoft Office. The fact that you can write macros in python gives the FOSS stuff a bit of a longevity advantage as new office workers come into the labor force and don't feel like learning Visual Basic. Where it lacks is the Exchange server market, where there's no viable FOSS software to handle email, organize meetings, allocate resources, and have it all work natively with single-sign-on credentials.
Gaming - OpenGL has seen huge improvement over the years, and it gets easier to work with every release. If it isn't already equivalent to DirectX, then it's well on its way. I see OpenGL as having more potential as well, since there are more interested and intelligent parties involved with its development than DirectX. The rendering library is just one component though. You also need top-notch hardware and drivers to match. The NVidia drivers are equivalent from Linux to Windows and are pretty good, if a little unstable. The FOSS drivers for NVidia have a long way to go still, as do the ATI drivers. NVidia is on-board with maintaining Linux as diligently as Windows, but ATI tends to lag behind in that area. Most major gaming engine components already work for Linux, like Havok, or the Source engine. With Steam picking up the banner of Linux gaming, it will certainly grow more viable over time too.
Interface - This is a big one. No matter how proficient you are, this one has to be learned. Linux has hundreds of different interfaces, and all of them require some amount of training to use and customize. Windows has this one because it has been essentially the same since Windows 95, and the paradigm and prior knowledge from all previous Windows OSes tend to transfer over from release to release. The only solution to this one is making streamlined workflows a priority inside of the interface, and then training people on it. As odd as this might sound, I think the best candidate for Linux gaining more ground on the PC interface is a window manager that focuses on ease of user customization, rather than ease of use. For me, that's fluxbox or openbox, with xfce making strong ground. Teaching people how to edit a text file and customize their menus and hotkeys takes me about 10-20 minutes, and the person learning it usually can get far enough with it to make it their own after an hour or two of use. Add in a program that turns your interface into a drag-and-drop to customize mode that's easy to use and it might start making some serious ground. I mean, Linux's real interface is the command line, and bash largely put to rest our ancient shell holy war. Once we can intelligently combine the advantages of gnome, kde, and xfce (which are the three biggest contenders for user space) and make all these paradigms work together, then we'll be on track for taking the desktop.
Anyways, just my two cents.