And that's precisely why it's not going anywhere at the moment. I love choice, it's great. But it's just as possible to baffle a user with excess choice as it is to not give them enough. And that's my main problem with a lot of FOSS communities there's overemphasis on providing a million and one competing solutions for every idea, which ends up with a lot of spotty quality with the average user not able to tell what option is good and what one is crap. It's my opinion that the Linux communities need to pool their resources and work towards some form of unification. I'm not saying there should be no choice of course but they need to start focusing on quality and usability more.
Where else is Linux supposed to go?
Cooperating on a single project might sound great and surely you might get something better faster than people spread on different projects, but there are some reasons why that won't happen and also why it shouldn't happen:
-People work on different projects because that's what they want to do. You could get some Linux companies to join forces, but a hell of a lot of the work spent on Linux projects comes from volunteers, and you sure won't be getting them to stop working on whatever they want.
-If people had all focused on one single project we would be missing parallel projects that turned out to be awesome. If everyone was working on, say, GTK, we wouldn't have the cool crossplatform framework that is Qt (and no one can guarantee that GTK would actually be betten than it currently is).
The way I see it Linux as a whole is sort of an evolutionary playground that advances slowly because of the diversified and duplicated work. What's worth sticks and what's not eventually fades.
The good thing is that surprisingly it does actually move forward, and so far they have achieved a nice desktop (despite it's many flaws) and an awesome server OS. It's certainly not the best way to get a product out of the door, if Linux was an actual single company they would have gone bankrupt long ago, but since it isn't... well, that's the way it rolls.
If you want an unified desktop your best bet is pushing the vision of one distro (Canonical, RedHat, whatever...) and forgetting about the rest, because I don't see all the Linux developers working together on a single project ever.
Heck, you can't even get users to agree on one single distro yet you expect those who are actually spending time coding to do so?