I guess I should stop using my Debian machines where I did an install in previous decades (decades, plural) and copied the setup from hard drive to hard drive across several physical machine rebuilds. Up to now I had no idea that this never works smoothly.
If you're the sort of person that likes to try out stuff from different places, including compiled binaries, non-repo packages, and other fun stuff, eventually stuff will break. A lot of desktop pieces of software have config files that keep changing.
I've found that keeping your old /home around and a copy of installed packages works well enough for most situations.
Actually I do keep around a few old binaries, and I have more often seen something else: software that no longer compiles with a modern compiler, but the binary I built in 2000 still works.
We're talking about Ubuntu here - that was my point.
I've been upgrading Ubuntu Desktop for years (a decade, singular) and I've always been struggling - especially if I ventured to install an alpha and then keep upgrading that. Compared to OS X, on which I always upgrade to the first Developer Preview and keep upgrading on, although OS X comes with problems, too, the GM usually fixes it all up. With Ubuntu, it's best to script your environment and rebuild clean. At least my experience. Garbage always piles up otherwise!