If a job is stopped/crashes at the wrong moment in the wrong way (I don't know the details...), like if the application pool recycles, it could end with its future run date set to the past. This seems to stop the scheduler completely. If you update the dates so that the next run dates are in the future the jobs should start running again. In CMS 6 R2 there is a new watchdog function which handles this for you.
However, if i remember correctly, starting the job manually should also fix this, so it might not be the same problem after all. But check the time of all your jobs just in case.
Have a look at below blog post to debug the scheuduler and see whats going wrong in it.
You could check the database table dbo.tblScheduledItem in your EPi database. Usually the job that is blockin the queue has the IsRunning value true in the database. Run the corresponding job manually from admin-mode, and make sure it runs successfully. Then recheck the database and the state should now be false (0). All the queued jobs should now be executing correctly.
this usually works like a charm
TorbjörnB's description was what helped me get things running again.
On a side note this bug is extremely disappointing and just caused a million problems for me.
Having followed http://world.episerver.com/FAQ/Items/Scheduler-does-not-run-scheduled-jobs-automatically/ the scheduled job is still not running automatically, but will run manually. There are no messages within the CMS to help resolve the issue.