I think I have an answer to my own question.

Some people had provided this similar idea in various responses around the web. So many answers just didn't work, but when I came to understand what the issue was, I did this:

Forms("MyForm").OrderBy = "IIf([MyField] <> 0, [MyField], 99999)"
That old NULL sure does throw things around a bit. Instead of Null (e.g. Nz(...etc...)) I used the field length (0), and set the falsepart to 99999, which puts the date about 50 years into the future.

This then sorts the blanks (i.e. 99999 dates) to the bottom, and the dates in the required order at the top. the future dates are of course, hidden.

If you use this in a query instead, simple add the IFF function above to a new calculated field, and sort on it (not the named field). You should also not display it.

Hope this helps someone in future.

Cheers