What is the best way to update a theme for a newer version of Magento?
What's the standard methodology for taking a self-developed theme and updating it to work with a newer version of Magento? More specifically, what's the best way to figure out what has changed and what will affect the theme that I have already customized? Incorporating new functionality into the old theme, etc.
Outside of re-theming based on the default or blank theme, there has got to be a better/more efficient way.
Well, after several years of working with Magento I can say that the best way to build your custom theme is to let as many template files as possible to be used in their untouched state from base/default and for completely custom page layouts use custom template files in your own theme. This ensures that when Magento is upgraded you will not have to change as much.
If your custom theme has almost all template and layout files that base/default has, then either your theme is heavily modified (i doubt that's the case) or developer did not know about best theme practices for Magento and just copied a default theme and started modifying it. A descent Magento theme usually has not so many files in it's template and layout folders and you will see only those that were modified from their original state.
If you have many files in your custom theme, I would start by eliminating those that were not modified. You can just delete them and they will start being inherited from base/default. You can try by temporarily renaming folders under "template" and see what that gives you. After this cleanup you will have to compare files that's left with base/default equivalents and map changes. Sometimes not only file content changes, but also the amount of files needed to put together a page, so you will have to go through this manually.
When changing something, always try first solve it using CSS and only then by modding a theme file.
Osyris made some great points. In an ideal scenario you've only modified few layout and template files. After doing a few upgrades myself I decided to write a script to help identify the files which have changed from one version of magento to another. I then find which files that have changed in magento have been copied to any custom themes. I've made this script available via github here: https://github.com/rgranadino/Mage-Upgrade-Helper
How it works: modify diff.php and add the path to the old and new version ($upgradePath and $oldPath). I keep a clean copy of every magento version that's released for this purpose. Set up the $storePath to point to your project, add/modify local directories (either code or design package/theme). Assuming your paths are correct it should scan magento, find the differences and inform you via the console which files you need to compare and potentially merge.
In addition to the already mentioned good points I'd recommend keeping all layout updates centralized in one local.xml. Depending on layout complexity you can also use default CSS and just add your custom CSS file where you overwrite parts you need. So you can keep your base CSS including new potential features without additional (or just minor) adjustments.