I’ve had yet another why-didn’t-anyone-tell-me-sooner moment–child themes in WordPress. From How To Protect Your WordPress Theme Against Upgrades (via Parent Child Themes and How I used a WordPress Child Theme To Redesign My Blog The Smart Way):
Problem: You’ve finally found a theme you like but you want to modify it. The modifications are pretty simple but what happens when you want to upgrade the theme? Do you really want to go through all those files again hunting down the changes? Don’t you wish you could just upgrade and be done with it?
So, basically, install the theme you want, create a new theme directory for you modifications, and in the style.css file, which defines the metainfo for the style, designate the original (unedited) theme as the template. If need be, use functions.php to make more modifications. Just note that any template files in your own version’s directory beyond style.css and functions.php will be ignored.
When it comes time to upgrade the theme, you upgrade the “parent” theme and your modifications are unchanged in their own directory.