I'm not sure where you're putting the code (listed in the Original Post), but if it's working that's great.
The first line should be straightforward enough as the value never changes. Furthermore, using the .Default property is certainly the best way to do this.
If you have the second line shown in a place where it works correctly (possibly the After_Update of the control itself), then that's also good thinking and should work (You probably already know that it does).
Getting onto the date issue then, now I realise this is simply a date manipulation issue and you already have the most complicated issues covered :
In code similar to what you are already using for your Cheque Number control :
- Me.Payment_Due.DefaultValue = Format(DateAdd("m", 1, Me.Payment_Due), "d mmm yyyy")
It is important to check that the current entered value is a valid date however.
PS. Your date format can be anything that suits you. I've used an internationally independent version here.