Determine what you require in a host.
First, you must decide on what aspects of hosting are most important to you. Price, support, convenience, flexibility, features, speed, stability are all important factors to assess. Does the host act in a professional and ethical manner? You may want to email their clients and ask them if they have had billing problems and how they were resolved.
Don't pay for more than you need. If you think you may need certain features in the future but can do without them right now, choose a company that meets your requirements now and will allow you to upgrade when necessary.
If you only require basic features and do not mind banner ads and less than 100% uptime, go with a free host. Then upgrade later.
If you can't stand poor support and hate wasting time jumping from host to host when your site continually goes offline, then pick a quality host from the beginning.
Some hosts do not respond to support requests. Others answer your questions within 30 minutes night or day. Try asking a prospective host a few questions. If they don't respond adequately before a sale they surely will ignore you after sending your money. Beware, some companies answer presale questions and ignore support requests later.
Convenience, Flexibility, and Features
Depending on the nature of your site, some features may be worth paying for. Do you need SSL, dedicated IPs, personal nameservers, PGP encrypted email, secure shell aceess?
Some features may be totally unnecessary. Most websites consume less than 5 MB of space and less than .5 GB of bandwidth!
We believe speed is the best indicator of high quality servers and careful server management. An overworked and mismanaged server will not load websites quickly and will be prone to failure. Ask for a list of actual websites on which your account will be placed. Pay attention to how images load.
If a server goes down, all sites on it become "not found." If this is a common occurence, your host is failing to properly manage the servers. Ask the prospective host for a snapshot of the system information including recent uptime, hardware configuration, disk configuration and memory usage. This will often give a more accurate description than the possibly outdated website.
Now that you have organized your wish list, research as many hosts as you can. Weed them down to the ones that match your features and price. Start asking questions that remain unanswered. Finally pick one (or more) and start service. You can almost always quit within the trial period and request a refund.