It won't vibrate when the phone is on silent or set to ring? Or is it both? Also, are you jailbroken or unlocked in any way? I'm not too sure what might be to blame, but I would suggest trying a restore and that might fix the problem. Also, check the settings one more time to make sure you have vibrate set to On.