I doubt it will help you though, because it will most likely cause some function somewhere to throw an exception which will in turn cause the app to crash.
That's why I blame the Android platform and not just the apps. If Android made it clear from the start that permissions are optional, and that requests for them can be rejected, applications would be written to cope with that. It would also force developers to explain why they need a certain permission.
Ironically, it is more of a social problem than a technical one. If people were expected to gracefully handle the exceptions thrown when permissions are denied, we'd be 80% of the way there, I think.
For example, the Android API has a tendency to return null from functions even when the documentation doesn't say it will (i.e. WifiManager.getScanResults and friends), or simply doesn't document return values at all (i.e. ConnectionManager.getActiveNetworkInfo). The Google guys aren't real stars when it comes to documenting what exceptions may be thrown either.
You can't blame app developers for not gracefully handling exceptions and return values that are not documented.
However, when the functionality that is being protected is implemented in a system service (which runs in a different process), it's the responsibility of the callee to check the permissions of the caller using Android's own 'permissions validation mechanism'.
http://www.cs.berkeley.edu/~afelt/android_permissions.pdf (Section 2.1)
I doubt it will help you though, because it will most likely cause some function somewhere to throw an exception which will in turn cause the app to crash.