Forum Moderators: phranque
Keep the old site live. Get all the files scripts and databases moved over and test, test, test. The data will be stale, but at least you can test.
A few days or so prior drop the TTL (time to live) in your DNS record to a few seconds (or a few minutes for a busier site). That way when d-day comes you can flip the switch and propagation will be instant. If there's an unexpected problem you can flip it right back.
With forums and databases, the problem is you've got data being added continuously. In the few minutes it takes to transfer the data to the new server it's already out of sync. Same with email, but's that's easier to handle. To get around that I've always bitten the bullet and brought the site down momentarily. At that moment I transfer the databases and any other data that's changed, and then point the nameservers to the new IP. Obviously pick a slow time.
After the switch go through your previously written QA checklist and quickly test the critical portions of your site.
It's always stresser, but with proper planning it can go smooth.