How to Transfer a Site to a New Host
This assumes a straigthforward website on a host; tons of scripts and complicated setups will be more involved. This is a seamless way to transfer your site to a new host, without any downtime.
Step 1: New host
Sign up for an account with your new hosting company, but don't cancel your old host yet.
Step 2: Download files
Use Filezilla to FTP your entire website files to your desktop. A better and easier option is to use CPanel, if your host provides it, to do a full backup of your entire site, which will then be placed on your main hosting account and you can just FTP it to your local desktop.
Step 3: MySQL
If you have any MySQL databases, you can also use CPanel's full backup feature to download these, or use PHPMyAdmin to download them.
Step 4: Upload
Upload all your files to your new host using FTP. Then ask your new host what the URLs of their name servers are.
Step 5: Point nameservers
Log into the website where you bought your domain name from, and change the name servers to the ones you previously got from your new host.
Step 6: Wait
Wait about 48 hours
Step 7: Cancel
Cancel your old hosting account.