Perhaps not a sexy solution, but asking to be removed from their database can help with legitimate (though annoying) businesses.
Another thing to ask is how do they get your phone number, and is that the same way potential customers would? For example, customers may be overwhelmingly getting your number from your website and business cards, while telemarketers may be pulling it from open online directories. Removing yourself from the directories, where possible, may reduce spam calls without reducing customer enquiry.
Alternatively, route every call through an answering service. Make a public note on your website / cards / marketing and/or the message bank that you will return all calls within 30 mins (or whatever) during business hours. Link the message service to voice-to-text so you get missed calls as emails/sms - respond to customers immediately, ignore the others.
Lastly, a sexier solution that may or may not work (and only if you have more than one phone line). Tell the caller you're transferring them through to the owner who handles the accounts (or whatever) and then just leave them on hold. Eventually they'll hang up, and due to the unprofitable time it takes them to call you they may not call back.