Argh, seems like iPhone 3GS has issues with is vibrator. For some mysterious reason, my iPhone stopped vibrating, Although some people blamed the missing vibration problem on firmware issues, however already I had the most recent firmware on.
Then I stumbled upon this tip which pretty much says to turn on vibrate and hit the phone from the back with your palm. It actually started to vibrate after a couple of tabs to my surprise .
Anyway, if you find that the vibrate keeps going off again, simply download one of those free vibration apps. For me I used iBrate, and kept running it (hitting it when it stops) until the vibration became constant. I did a few cycles of that (ie starting and stopping the vibration) and it was fine after that!