I've had to change web hosts a number of times. In fact, I spent most of this week changing from one host to another. Believe me, it is a major pain, although I have made sure that my site is always ready to move if necessary.
One thing I've become is very aware of difference between a good host and a bad host. To put it simply (and obviously) a good host makes it easy for you to create and maintain your web site. A bad host gets in way and makes you angry, unhappy and gives you an ulcer.
The key point to remember when evaluating hosts is most important quality is responsiveness - of your site and support people. Your site should be up virtually all of time (unfortunately computer crashes do happen but they should be rare and far between) and it must be fast. In addition, all good hosts react in a timely manner to support issues and questions. You can tell when a host is going bad from failure of these key areas - unresponsive technical support, slow servers or constant downtime.
This article is intended as a kind of checklist - what is essential, essential if you need it, optional and not important at all? Look it over, then when you go to find a good host pull out article and make sure it measures up.
There are a few attributes which are common to all good hosts.
Reasonable support - This is something you won't know until you've started using a web host and hopefully you will not need much support. However, when you have a question, concern or problem, it's essential that you have a way to contact support staff. Just as important is handling of issue needs to be fast and efficient. I wouldn't insist on a phone number, but an email or form interface with quick responses is essential.
Even if you don't have any particular reason to contact support, it's a good idea to send off a message occasionally just to see if they are on ball.
Access to control panel - You should not use a host unless it gives you access to a well defined control panel. What does this do for you? It allows you to control features of your web site (account) from your web browser. For example, using menu you should be able to upload files, protect directories, add autoresponders and so on.
Excellent automation - This is perhaps one of more important features of a good host. Automation. You should be able to access everything you want from a well designed menu and do virtually anything without involving a human being.
Control of creating protected directories - Sometimes it doesn't seem important, but sooner or later you will almost certainly want to create a protected directory. This is a directory (or folder) on your web site which requires a username and password. Any good web host will allow you to do this directly from your account menu.
Error pages - I would not host my site anywhere I could not create my own 401, 403 and 404 errors pages. I like idea of letting visitors know in a nice way when there is a problem. The better hosts allow these files to be maintained from control panel, although some simply allow you to edit your .htaccess file directly.
Reasonable performance - A web site must load quickly. It's hard enough to get page sizes down to point where they load reasonably quickly without your web host slowing things down.
Domain Parking - It's incredible useful to be able to park a domain on your web site. This can be useful for having several closely related domain names (internet-tips.net and internet-secrets.net for exmaple) as well as to just reserve domains for future use. A good host should be able to allow you to do this for at least a dozen domain names.