One of my coworkers just put up some tutorials and code about an amazing service called Twilio. How to use it to make an IVR.
The system is a text-to-speech converter that runs off of a telephone line at the Twilio center; when a caller dials in it contacts a web server, yours presumably, which replies with XML documents. These XML documents then give speech for the Twilio service to speak to the caller and define how the caller should interact with the system.
These interactions can run a gamut of different interactions in key presses, tones, et cetera.
In the example I am linking he goes over how to make a simple voicemail menu.
I am hoping to put this to work on one of my own projects.
Link, via Adam's Continuity at BlackAcid