If you want to make sure upgrades work across many versions please test them BEFORE we release. We rely on the community to test things obviously.
ie: "Last but not least, keep in mind that upgrades can fail because version 5.2.1 - 5.2.2 makes an assumption that is not true anymore in 5.4.1, but breaks because the TCL procedures used in the 5.2.1-5.2.2 upgrade behave differently now. This happened to me on acs-subsite and a couple of times on XoWIKI. And yes, you should not have a system so out of date, but it still happens (and apparently it happens a lot, from my experience)."
This can be fixed by updating the upgrade 5.2.1-5.2.2 in 5.4.1 only. That makes the upgrade work fine, but doesn't break upgrades in other releases.
There is no way to test every permutation of versions.
You must backup. That IS the best practice. I still say if an upgrade fails, there is no way to reliably continue upgrades if one script fails. The database is in an unknown state. The only way to proceed is to ttart over, fixing the error. Is the user cannot fix it himself, they report the problem and ask for help, hopefully the upgrade file is fixed in the next release.