This is one of a large number of excellent free tools available from SysInternals.
It can also identify which process owns a window and many other handy things.
It is a great "task manager" replacement and it can be very useful in diagnosing all sorts of issues and I like to sort the tasks by "startup time" (add this column if required), this is what it might look like:
If something hangs, I'd use this tool to determine the last tasks to be started (sort by "startup time"), if there is no activity then perhaps the last task has hung. Having a look at its running threads may give you a clue what its doing.
If there is lots of task activity perhaps the process hasn't hung (it may be long running - try waiting longer). If it doesn't complete what is starting may help you determine what part of code may be in an "infinite loop" and this may suggest a work around you can try.
The PROCESS MONITOR tool can also help with problems that may cause problems or hangs.