I know how to find the last day of the current month....
Dateserial(year(date()), Month(date())+1,0)
Should be relatively simple to build a before/after update or something to validate it.
Alternatively "simply" force it to the proper date in a query or something.