Well, it's just software. You could do it if you want in code ... :) InfoPath handles some ADO.NET diffgrams.
For offline diffgramming via code, here's my advice... write an OnBeforeChange event handler that copies the node to be changed. Write an OnAfterChange handler that copies the change and executes some logic to create a delta track. In other words, you want to log the xpath for the change along with pre and post values. This repeating section of 3 nodes could be a secondary DOM in your solution that you save in a special encrypted node in the main DOM (OnSave) or as a separate file (full trust). The section acts as a playback journal. From this, you can generate your diffgram.
Good luck. Please share any code you create with us. We would be very grateful! :)
Patrick Halstead
Project Manager at Qdabra