In answer to your question . . . I did have a smooth upgrade once. It was a Tuesday. . . from 1.4 to 1.5 . . . ahh, that was the life.
This recent one , ( 1.5 to 1.6 ) was a nightmare. Killed my weekend and thankfully, I found some guys to help bring it all the way across the finish line and get everything sorted out when I was going a bit nuts and running out of time.
That being said, whatever server you’re on, try to get one that can host a test environment. That’s really the best way to go. Most production servers can host multiple sites, especially ones powerful enough to have Magento running smooth in the first place.
In Cpanel, just get yourself an Addon domain connected to the site.
We actually have two domains on one server ( site.com + sitebeta.com ) - They are exactly alike, running on two DBs and essentially all my themes and pieces are in them.
Most of the time, sitebeta.com is either showing a custom HTML page (and I rename the index.php to index1.php); or it’s redirecting to the main site. When it’s time to experiment, upgrade or test .. I put sitebeta.com live and start testing.
This normally works pretty well for us; and the few times I’ve stepped out and did it on the live production server, man did I regret it.