That would require a script with a script trigger rather than a calculation to keep them from accessing the field if either date field is empty. You could set a validation rule on the fields that rejects user input as invalid if either field is empty but that's not how I read "go to" in your post.
OnObjectEnter Script triggers on the field can test the values of other fields and use go to field or go to object to move the focus to another layout object to deny field access basd on the value of other fields.
If [IsEmpty ( YourTable::Expiry Date ) or IsEmpty ( YourTable::Retest Date )]
I tried your suggestion but I dont have any luck.
I have attached the link of my file http://www.4shared.com/file/hfISBu-1/Material.html.
Again, thank you very much to any help that you can extend.