I use a custom hosts file (well, technically I run it as an internal DNS server) from Someone Who Cares to block most of the aforementioned annoyances: http://someonewhocares.org/hosts/
It works very well for me so I'd recommend it to others, if they're not already aware of it.