It really depends what sort of traffic your expecting.
I have quite succesfully hosted a number of sites for my own personal use, and for interacting with a group of friends at home on a standard DSL line. For that sort of use its fine, however once you start getting into the realm of other people using your sites you need to consider a number of things:
- Speed of your link, in particular your upload speed, which is usually much lower than your download
- Hardware reliability
- ISP blocking or restricting certain ports
- Dynamic IP's
Once you start looking at hosting sites that are more than just a utility for yourself, your start to reach the limits of what you can do with home DSL connections, your upload speed is usually pretty limited and will have issues handling more than a few connections. If you really do want to host at home your going to need to look for a connection with good upload speeds.
If your going to host sites for other people (and charge them) then all sort of factors come into play, what sort of reliability do you have. That old PIII you have in the corner may be quite capable of hosting your development sites, but would you really want to host other peoples data on it. If you do get some decent hardware, what about backups, cooling, fire suppression, power, these all become issues when your hosting other peoples data.
It comes down to the fact that if you going to be hosting other peoples data, its going to better for you, and them, and more economical if you want to do it properly) to host in a proper data centre. If you want to own your own hardware, great co-locate, if you don't, rent a server.