I suspect many projects don't upgrade because it is not easy to do, and one thing that takes time and attention is doing the database updates. You have to sort out by hand which ones you've already applied and only apply the new ones. It would be very useful if a log was kept of which updates had been applied. Even better, when running the update script have it check this log and decline to apply the updates which have already been applied.
The attached file, db_update_util.php, contains a modified version of the do_query() function which does all that. It can handle updates which consist of more than one mySQL request. The log file db_update.log is kept in the project log directory, and while the lines written to it by do_query() have a timestamp, one can also add lines by hand with just the names of previously applied updates.