Oh man I have been in the situation so many times that for a while I almost completely eschewed the idea of rolling updates and went back to ye old time method of staying up until the wee hours of the morning making sure everything is perfect.
These days though I'm a little more pragmatic and updates happen in much smaller increments with much smaller migrations that can *always* be rolled back (even if data has changed, because I backed up the database!). Big updates are the root of all deployment evil.