I've run across this site before and it covers some good design tips. Listed here http://www.gethuman.com/standard/v1.0.html They also grade the top 500 customer called numbers in the US and also list a cheat sheet how to get a real person for each number, listed here http://www.gethuman.com/us/
What's sad is two of the systems listed here I have personally worked on, one got a grade of D and the other a grade of F. Well since I've only added to the problem of frustrated users, I'll start posting how you can implement these standards in your Speech Workflow Applications. The first one that I am going to tackle is number two on the GetHuman Standards list.
"An accurate estimated wait-time, based on call traffic statistics at the time of the call, should always be given when the caller arrives in the queue. A revised update should be provided periodically during hold time."
I'm going to start working on the code for a Call Queue component with a supervised transfer. I've created a CodePlex project for this, I will have the project published within 30 days, April 5th. http://www.codeplex.com/GetHuman The project will use the Microsoft Permissive License, the least restrictive license.