I think in an ideal world we would have something which loaded an old version, upgraded, dumped the schema in some canonical form, and a clean install dump which we could diff in order
to pick up missing upgrades. Of course I am full of good ideas but not full of time to implement them.
Basically though, it's hard to catch missing or incorrect updates and any solution which relies on the diligence of a large set of developers is
pretty much doomed to failure.