Yes, it is possible to change web hosts with zero downtime, but you need to prepare and plan for the move well in advance.
Lower Your TTL
The first thing you need to do, well before the change (like a week), is log into your domain registrar and change the TTL (time to live) to a low value, 300. TTL is the amount of time (measured in seconds, so a value of 300 means 5 minutes) that DNS resolvers will cache your DNS entries for. So, every 5 minutes they will check for a new value (IP address) that they should be pointing the relevant DNS entry to (eg www.hostt.com).
By making this TTL value as low as possible, when it comes time to change hosts, you can quickly have all the DNS resolvers know to direct your traffic to the IP address of your new hosting account, thereby making downtime non-existent.
Keep Two Accounts
Another important thing is that you don’t cancel your existing web hosting account until at least a few days after you have fully moved over to your new hosting provider. Otherwise, they might switch off your hosting prematurely, before you are ready. Also, in some rare cases, something might go wrong with the switch and you need to revert back to your old host and try again at another time. If your old hosting account is terminated then there will be nothing to revert back to!
All this means is that you should keep your old hosting account active for a few days after you move, just as a precaution. Then once you are happy that the entire move has been successful, you can cancel the old account. By the way, BlueHost can help you to complete the migration from an old hosting account to their service, guaranteeing that everything is working correctly before you terminate your old account.
The Actual Move
For the actual hosting account move, often you will be able to do this completely within cPanel. Simply generate and download a complete cPanel backup of your site, email, files, images, databases, etc. Then login to your new provider and restore/upload that same backup file. Everything should be restored, from your old host, onto your new host’s servers.
If you are not using cPanel, then I highly recommend Updraft Plus (a WordPress plugin) for migrating your site. I have personally used it dozens of times and to be honest it is a life saver. Not having cPanel can make site moves quite complicated, but Updraft Plus takes all the complexity out of it.
If you are required to change the nameservers of your domain to point to your new host provider, then you may unfortunately experience a small amount of downtime or lag before all your customers or visitors see your site on your new server. This is because while change to the IP address using your existing nameservers can be shortened to take as little as 5 minutes (as I explain above, under “TTL”), changes to the actual nameservers themselves can take up to 48 hours. The good news, though, is that most people use DNS that will be updated within a matter of minutes, say 30 minutes maximum, while others may take up to 48 hours to see the changes.
This is a massive improvement from when I first started making websites, when every single change would take a matter of days, no matter what!