I understand that developers aren't *intentionally* pissing people off and it's just a side effect of something else. Also, I understand that making code evolve isn't easy, but rewrites tend to be even worse -- even if it looks simpler because "hey now I can understand all the code". UI or not, I can't think of any project (though there may be a handful) that really benefited from a rewrite. The only viable way I can see is when you have the resources to keep maintaining the old version until the rewrite is not only released, but achieves feature parity with the (still evolving) old version. This is what Microsoft did with NT and I'm sure it wasn't cheap.
In the end, I think the problem isn't even just for users, but for developers as well. From 1999 to ~2005, I wrote and maintained an application that had a gnome front-end. All I can say is that it was a rather painful experience. The API itself was OK (except for being C rather than C++, but I could deal with that) and it didn't take too long to get something working. The real problems came with maintaining the code with ever-changing APIs. Part of that was the gnome2 transition, which not only changed how some widgets behaved (it's OK for a major release), but also completely removed some widgets (GnomeMDI for example, which was supposed to be "the right way"). Even after the transition, APIs would keep coming and going. Oh, we're no longer supposed to use the gnome canvas, there's something new instead. Need graphs? Use GtkPlot, no use Guppi, oh wait we rewrote it and Guppi2 is much better, no but Guppi3 will be... You would never know which API you could trust to not end up being deprecated in 6 months. I stopped being involved around in that project around 2005, at which point the other main developer was working on a Qt frontend. (I still work on FOSS, but fortunately I haven't have to work with GUIs since then)