I use Asterisk at home to stop telemarketers, bill collectors (for individuals I don't know), wrong numbers, and political pollers dead in their tracks. Since I refuse to pay $4.99 extra a month to have my number unlisted (should be unlisted by default; but that's an argument for another day) I came up with this solution. I have an automated attedant in Asterisk that answers the phone and announces in order to make my house phones ring you have to dial the correct extension. The extension is some random number that I can change on a whim and I only give out to individuals I actually want to call me. Anybody else that just dials me from the phone book goes through phone tree hell before they finally get disconnected.
Problem solved.