I know this problem is not fully answerable, and will probably never be 100% solvable.

But I am looking for ways/techniques to determine if an IP is belongs to a normal home/business user, going through a normal ISP, or if it's an IP from a hosting company or other type of network/system/server that is very unlikely to be a normal user on a normal ISP connection. I am really interested to hear about any ways people here have figured this out, as best as they could.

Are there lists that might associate netblocks with hosting companies?

Is there anyway to differentiate an ISP from a hosting provider, based on any public information?

If you were tasked with solving this problem, as much as you could, what approach would you take? 

My knowledge of networks and how the whole internet fits together isn't bad, but I'm more of a software engineer than a network guy and I don't really understand what information is where or how to obtain it. I know that companies can have netblocks assigned to them, and that that information is somewhere, and that's about it.

Any help, *greatly* appreciated.

EDIT: I'm interested in automated ways of doing this; not a human visiting a website per IP and looking for clues that it belongs to a hosting IP. So in other words, I'd have a database or something, with information and a way to determine, from that data, whether an IP is hosting or ISP, for example.