I've done a lot of this as a main part of my job was to take the internet assets of companies we bought and bring them in house, then transition the content into our own internet assets. I've done hundreds of them.
One detailed check list would be very hard to do as there so many variables involved.
Generally speaking, it's easier to go between servers of the same type. Say from an Apache server to an Apache server or from an IIS server to an IIS server. Sites based on a good CMS or made from a software applications often have tools available to make this easier.
Make sure the new server has all the software the site requires such as; MySQL, PHP, ASP, Ruby on Rails, Perl, etc...
Check the versions of all the above software for compatibility with the site software. Be careful here. You might have a CMS or plug-in that says it requires PHP v4 or better, but old software may not work with PHP v5.
Think about the timing of when you'll switch the domain pointer. At first i always did it on Mondays so i had the rest of week to troubleshoot any issues. Later, i starting doing it on Sundays when our traffic was lowest so fewer people would be affected by any issues.
Notify everyone with write access to the site not to change or publish anything during the transition. This will make your job easier.
Test, test, and retest on the new server before you point the domain to the new server.
Database information needs to be as up to date as possible. I would update the database contents just before repointing the domain. Since the domain information takes time to propagate there would often be a few new/changed entries on the old server (ie. new members, or members updating there profiles, etc...). So the next day i would query the old database for new/changed entries and move them over manually.
Don't forget about other internet assets, like email, ftp, IRC, YouTube, etc...