If you haven't committed the new state yet, you can use Retrieve From Database to get the same object and compare those two. The database will be the old version and the object you didn't commit yet should contain all the changed values.
If performance is an issue, you can solve this in Java Actions without needing to retrieve the object from the database again. This can be done by checking the previous value of the member of an object. This would be done by calling IMendixObject.getMembers(), then looping through these members and calling getOriginalValue() and comparing this with the current value.
You can also call IMendixObject.getChangedMembers() to see changed members.
Realize this is a pretty old thread, but Community Commons has a couple pretty awesome Java Actions that help solve this. Take a look at "memberHasChanged" and "getOriginalValueAsString". Both very useful and easy to configure.