Linux and the BSDs have been chasing desktop usability for ages. Hell, I've been chasing desktop usability for ages.
Microsoft has it easy. The produce windows and all the laptop, desktop, and server vendors spend hundreds of millions of dollars making sure their designs work with it.
Apple makes their own PCs, they don't have to chase hardware.
And us? Every time a new machine comes out (which is often). A new model, a new chipset, a different combination of on-board devices, whatever.. every single time that happens we developers have to write new drivers or modify existing drivers. We have to work out the kinks, the broken mobo hardware, the broken ACPI implementations, the broken sound hardware that doesn't follow vendor specs or has major exceptions because vendors are lazy. We have to glue the whole mess together not just once. Not just twice. But 20 or 30 times a year. Every year. Forever.
Until that equation changes, the general population simply can't depend on any of our open source code to work on whatever new cool computer they want to buy. And that puts us in the backseat in terms of adoption. Every time.
We can make our stuff work with specific machines, at least if the stars align (that is, if we have the chip specs for the chipsets that have changed and we can write drivers for them fast enough). Making our stuff work with everything, out of the box... it just doesn't happen on a macro scale.
In some small way the collapse of the external chip vendors into a much smaller set of companies has helped. Only two major video companies that we have to worry about now, plus whatever Intel is doing (which they at least provide some specs on now, finally). Only two WIFI chipsets that really matter, maybe three. Only a half dozen ethernet chipset families really matter now. Only two cpu vendors really matter. It's getting better but not because the companies are altruistic. Simply because there are fewer of them and we don't have to write as many drivers or make as many driver mods whenever new hardware comes out. But it isn't enough. Not nearly enough to make us competitive.
That's the #1 problem.
The #2 problem we face is that there is no suitable desktop that works as well as either Windows or Mac desktops. I've tried them all. In linux even. They ALL SUCK. They all break in one way or another and it's just as bad in the linux community as it is in the BSD community due to rampant N.I.H. syndrome. The desktops fail on many levels. Apple doesn't have this problem because Apple enforces a unified ABI for accessing major media subsystems such as audio and video. Microsoft doesn't have this problem either, for the same reason. Linux and the BSDs have no unified ABI, essentially forcing application writers to target their apps to specific user interfaces or hardware subsystems.
It annoys the hell out of me but I don't see anything on the horizon that can really solve the problem.