The original sin of the Linux desktop was the kde/gnome split over licensing. Had Linux had one good desktop, like the other operating systems, it could have had a future on the desktop. Instead it has had a number of almost-good desktops that are still fragmented by hate and the desire to thwart interoperability. For instance, the GTK team won't fix certain bugs that affect running in a rootless X server because the…
In the end the problem is likely the same as we are seeing on the web. People loves to code, not write specifications and sticking to them.