I would check these three things:
In Central Administration of Sharepoint, click on the Operations tab and go to
Timer Job Status. Look and see if the Immediate Alert jobs are running; you can
see the last time they ran and whether or not they are successful(this is only
good for immediate alerts obviously, I'm not sure what triggers the time based
types of alerts)
Check to make sure the Windows sharepoint Service Timer is running on the
sharepoint server. If it is running, a restart of the service may help.
Make sure that the account the Windows SharePoint Service Timer is logging on as
has not changed passwords.
For us, it was the last item that made the difference. The account that the
service was running as had been changed and no one caught that it broke the
alerts for several weeks.