Of course, there is no such thing as free web hosting. What they call "free hosting" is always paid for. There are two (maybe three) reasons why somebody could offer you hosting could be free:
  1. Professional hosting companies like Portland.co.uk or MyCgiServer that let you have a taste of their services, severely limiting your bandwith quota so that whenever your site's total transfer grows over the 100-200 mb limit per month, your site will be stopped.
  2. Ad based free hosting services: they host your pages so that they can put always more disturbing and/or annoying banner ads on your original work. This model was the one of the so called free internet, but nowadays with always declining internet marketing revenues it's quite hard for them to live. That's why they will sometimes add pop-up ads, popunder ads, layered Flash animations and whatever else can help to render your site unusable;
  3. Kids running a Linux box with a DSL line who want to make millions somehow. They will offer you a lot of services - sometimes even telnet access, but their quality of service is usually awful.
My suggestion is to always go for #1's. They do have a reason for your site to work as smooth as possible: the simple fact that if everything went well and you are satisfied with them and your site grows, you will want to host your paid site on their systems.
#2's are usually more worried by quantity than quality, and do not usually help you at all if you encounter problems with their system. Also, you might find the local church site you mantain under a wealth of unstoppable smutty pop-ups (see infinite pop-up porn ads).
#3's are usually the worst: their downtimes are always abundant and unless you don't like to play "user and root", you'd better stay away from them.