That's a tough and often impossible goal, I've faced this problem several times.
I generally follow the following process:
1) Open the progress view and see if there is anything listed in it; in some cases, a
non-system job is creating the problem and it is actually named. If nothing pops up here, it may be a job tagged as system (to hide it), or something that doesn't even run as a job (even worse)
2) Use the show heap under the general preferences, to try and spot if heap size jumps. By default, Eclipse runs with not enough JVM Heap Space, and once it hits its limit, it will start churning even if no plugin is at fault and get stuck.
3) Create and run a debug version of the workspace and try to reproduce the problem, and at that point break the program from the other Eclipse and see what threads are active. Unfortunately, most threads are not identified with the spawning plugin which really sucks.
4) Unfortunately, start wasting time on a search.