Have you tries property changed http://www.day.com/maven/jsr170/javadocs/jcr-2.0/javax/jcr/observation/Event.html#PROPERTY _CHANGED ? Only problem is jcr:lasrModified always get changed when you save dialog causes event to trigger.
I guess better would be use Hadler for this dialog to make changes.
When you have a component or page dialog, and you submit the values via "OK", then the SlingPostServlet is used to persist these values. I guess it doesn'T check if values have changed or not, but persists the data sent along with the POST request.
So I would redesign the algorithm to recalculate that jcr property in all cases, and it does not depend on the information, that other specific properties have changed.
Can you try the beforesubmit event listener of dialog widget to check for your scenario whether the value is updated by the user