Many iPhone owners expect that incoming call blocking is a built-in feature of the iPhone. Unfortunately, this is not the case. Such a feature is controlled at the provider level. Furthermore, most providers fail to offer call blocking to their customers. Providers that do often charge an exorbitant rate for this feature, such as AT&T in the US which offers a service called “Smart Limits” which includes call blocking but comes at a pricey $5 per month.
There are a couple solutions/workarounds that you can implement:
1) For those of you that are jailbroken, there is an app called iBlacklist that will allow you to filter incoming calls and SMS text messages. This is not a free app, but at it’s current price of $12.00 (one-time purchase), it can pay for itself fairly quickly vs. pricey provider solutions.
2) Don’t block calls, but silence them with a silent ringtone. This will still allow the calls to come through, but will silence the ring so you won’t even notice. To set this up, download this iPhone silent ringtone (be sure to right-click or cmd-click and “Save As”), import it into iTunes, and sync it to your iPhone. On your iPhone, add the number you want to block/silence to your contacts and set the silent ringtone as that contact’s custom ringtone.
via How can I block incoming calls on my iPhone? | The iPhone FAQ.