Several users have reported that their iPhone 4 does not vibrate even though they enable vibrating. It is a common issue that the vibration motor may get stuck or jammed. To solve this issue:
1- Enable vibrating on your iPhone
2- Download a free vibrating app like iBrate. Basically, all iBrate does is make your iPhone vibrate on command.
3-Turn on vibration via the app and gently tap the top right hand side of the phone when looking at the rear surface where the vibration motor is placed. It will stutter and come on and off but after a while it becomes more regular.
Contact Apple Support if you are still having issues with the vibrate feature.