I use [Clean Eject][1] (free). It doesn’t stop writing the files but will intercept the drive before it gets removed, so it’s better than a tool that you have to run separate from the eject process..

In addition I use a [custom Automator Service][2] (also free) to be able to assign a hotkey to clean & eject a volume using the app.


  [1]: http://www.javawa.nl/cleaneject_en.html
  [2]: http://www.gingerbeardman.com/services/