I have some things where I watch ObjectModified, then store the ObjectId. The I also watch Editor.EnteringQuiescentState, and that's where I actually do my changes.
I remember trying to do this using some of the other event handlers, but ran into various problems. I finally ended up using this approach, and it has seemed to work pretty well so far. It has some interesting repercussions sometimes, such as when the user modifies an object I'm watching via the Properties Palette (the event handler fires a bit later than I'd like in this case), but all in all it seems to work well.