How can I detect a hang up best?

I have an IVR application that asks some questions and records the answers. At the end the results are emailed to me. I would like to get results even for partially completed surveys where the user never gets to the “send email” point in the IVR. What is the best way to do this?

I googled around and found the “h” extension, but the voip-info site hinted that this wasn’t always reliable. Is there a better way?