Writing these things is a tiny part of my job so I tend to sit with them on speaker and do something else. I like to listen for the time breaks to see when they've put their conditionals in to their programming.
I'll leave it going until it's answered, or I have something else to do generally but if it's run for 40 minutes and it's not a weird thing (like Glastonbury tickets) I'd hang up and try again later assuming they were chronically low on agents. Also I'd probably try other things if I really needed to get through, like ringing but choosing no options as if my phone didn't do tones, or picking obscure options to make getting to a human quickly most likely. Although this is a bit desperate and if the system is set up right shouldn't do any more than end up with you back in the call centre queue.
Also, if I needed to sort it, I'd see what other methods they had. A lot have online chat now which is often very effective. I'd do that while hanging on the phone. Finally, I never take the 'callback' option, if they don't have the agents available to take incoming, then they definitely dont have the resources to be making outgoing.
I'm not surprised by bad service on enquiries, but I agree that if a company can't sort out taking my money quickly then they are doing something badly wrong.