The android system has six different volume settings you can independently adjust. If your alarm is going off, but it's silent, then probably the - guess which! - alarm volume level has been turned down. I actually had this happen to my Hero, that time Locale and the vibrate mode were the culprits. When Locale switched my phone to vibrate, the alarm volume got turned off. When it switched back, however, the alarm level was left at 0. I discovered this when I overslept on a weekday.
Do you have, by chance, any app installed that adjusts your phone's volume levels?
What I advise you to do, is that you download a volume level widget. I use AudioManager Widget, it's small, free (ads...) and to the point, it lets you adjust these six volume levels with sliders, that's all. But any other similar app will do, there are a couple available. You should check your alarm volume with it, if it's at zero, there's your problem. If it's not, I don't know what it can be.