It depends on how big or small is your website, if it's just a blog or a small forum and your current hosting company is uncooperative, i recommend to access your file manager and zip/compress your blog folder, download it on your PC, and export database using PHPMyAdmin, then upload zipped file to your new hosting account using FTP (one compressed file will not take too long to be uploaded), then create a new database on your new host with same name of the exported database, access PHPMyAdmin and import the database file.
Your new hosting account and database name must have same name or you'll need to update config file of your blog or forum.
This way you can migrate your website yourself.
And you always can generate full backup to keep your Email accounts and everything else hosted on your account.
You may find with the big hosting companies (hostgator ect) they might reply quickly but it will be some untrained Indian guy copying and pasting responses. Go for a medium sizes company and I guarantee they will provide more personal help and be more willing to assist you in your needs.