There is one system I have seen work very well out there and it's put together by Virtual Hold Technologies. I experienced this first hand when calling Moen Faucets for a replacement part.
The way it works is a customer calls in and they make their choices of which department they need. After their selection, they are given an estimated wait time. They then receive three options. The customer can receive a callback based on their current queue position and expected wait time, schedule a callback for a later time more convenient to the caller, or remain on the line.
If they choose the automatic call back, the system will place the call and a recording is played to make sure the person is on the line that requested the call back. They can then take the call from the next available representative, re-schedule the callback, or cancel the callback entirely.