RedGate has an error reporting tool that says it can
"Get a complete state of your program when it crashed (not just the stack trace), including the values of variables when the crash happened – without having to go back and forth in inefficient email conversations with the end-user."
I've built a unhandled exception reporting tool our applications, but I can't imagine how they get more than stack trace information in production code.
Does anyone have any ideas?