Suggestion from a work colleague - when VS is very very slow or is hanging:
Open a second copy of VS and attach its debugger to the first copy. When the first copy hangs, pause it in the second copy and look at the call stack..
I thought it was a cool idea... but would am I missing something here? Are there any pitfalls with this approach? Or does anyone have an even better approach?