Switching web hosts should be done after careful planning and analysis of the new host since it will definitely mean up to 48 hours of downtime for your site and mails. Once you decide to change hosts, ask the new host if he can do the account transfers for you. That will take a big burden off your back, if he agrees. Next contact your domain registrar and change the nameservers to that of the new host.
It would be a good idea to first take a complete backup of your account and keep it on your local PC. Also inform your contacts that your site will be down for up to 48 hours and that they should send mails to your alternative address. Once your account has been transferred to new host, double check for missing files and databases and other scripts as version mismatch can cause data corruption on the new server. If everything is fine, you can proceed with canceling your account with your old host.