Now only if the Arduino IDE would park a copy of a sketch's hex file into the user's sketch directory directly like it once did so many moons ago, I would be a happier camper.
Just write a wrapper script around avrdude
But seriously. This can easily be handled by using an avrdude wrapper.
Not the prettiest method but it is very simple.
If you simply rename avrdude than write a script that gets called instead
you can do whatever you want before you then run avrdude.
The only drawback is that it only runs when an upload is done.
Personally I would find a listing or nm output much more interesting than the .hex file
since the .hex file is already available in the build area.
With the 1.5 IDE it is really easy to get even more sophisticate since you now have
complete control over the commands used for everything from the compiler, linker, uploader,
etc.. in the platform.txt and boards.txt files.
That is the beauty of open source.
You can make do whatever you want.