Recently, I was trying to unravel some pretty hairy code that I inherited. After spending a bit of time trying to map the various aspects of the algorithms implemented I took some advice and tried out some various tools to help with this.
The one I finally ended up actually using was from Logic Explorers. They've got a pretty handy set of features that let you diagram out code and then using filtering and stuff to get just to the good stuff. I found it particularly helpful for teaching my lower level engineers.
It is one thing to go over the code and explain why it isn't elegant or needs to be simplified or whatever. It is much simpler to show them a diagram which actually looks like spaghetti and then they understand why it needs work.
Being a visual person, tools like this really help me. If you think better on a white board, this might be a good addition to your toolbox too.