I support one system that has a team working 9am-6pm in Toronto on one server, and another team working about 10am-10pm in Mumbai, India, on a satellite server. That means the system's in use from about 11pm through to about 6pm local time, so my 'maintenance window' is technically 6-8pm.
So when it's time for a roll-out, it's a little tricky because the two teams share a server for some operations, but not for everything .. so we usually make the changes at both ends sometime during the day and get our end tested. If it all checks out, we test the Mumbai satellite from Toronto, and then finally get them to try it out at about midnight when they start their day.
We usually have an opportunity to roll back to the previous version, unless it's a database schema change, in which case any fixes depend on changes to live Production code. That hasn't been a problem in the four years I've been doing the job.
Alex / talexb / Toronto
"Groklaw is the open-source mentality applied to legal research" ~ Linus Torvalds