How to silent (vibrate only) alarms?
Use a silent MP3
Here's the solution that worked for me:

Get silent audio clip. Search online (e.g. using Google) or create (using GarageBand, Audacity, etc.) a 20-25 second clip of silence.
Get clip into iTunes. Save it in your iTunes as a &quot;song&quot; (I just called it Silent Ringtone).
Get clip onto iPhone. Then sync your phone so it's now on your phone. (Make sure you check the Sync Music checkbox in iTunes.)
Use clip on iPhone. Now, when you create an alarm, use Pick a Song from your library, and select your &quot;Ringtone&quot; song.   If you have your settings elsewhere set to vibrate on silent or whatever, then you should now have a song that &quot;plays&quot; while your phone happily buzzes.

Hope that helps!
P.S. As someone who only recently switched to iPhone from a phone that could do the vibrate-only alarm thing easily, I would use these alarms to set myself private reminders for lots of things. Such as when I was in a lecture or meeting and needed to remember to leave 5 minutes early but didn't want to be watching the clock constantly. Or if I had to remember when to go back and put more money in the parking meter. Or basically a multitude of things to alert myself that I didn't need to whole world to know about! Just a simple buzz in the pocket was enough.
Further reading: HowToGeek has screenshots