Well, the good news is that the only way that dialog will appear (if you are allowing it to show) is if one of the BOs on the form is dirty. So you will want to look at your code and see which BO is becoming dirty.When the form is closing, it will enumerate through the Businessobjects and collection and check if any of the Bos are dirty...if so, the form will come up.
So you will want to handle the IsDirtyChanged event of the BOs, set a break point on the set of a BO property, or something that will help you diagnose the problem. So the first thing to figure out is which BO and field property is becoming dirty then you can work from there.