It is almost impossible to prevent a browser from navigating wherever a user wishes to go. Security can block access upon arrival at a particular page, but security cannot stop a user from leaving a page. If you have incomplete conditions in a session, your only reliable option will be to disable the components on other screens that need those conditions satisfied, while displaying a banner (in a dock, perhaps) that indicates the problem. (And presumably offers a button to navigate back to the incomplete page).
You might be able to minimize the problem by disabling all navigation on the problem page after editing begins, and making the condition-checking script perform the final navigation when the conditions are satisfied. Run that script from a button, not upon navigation.
Agreed. Your field validity check needs to occur BEFORE you allow a user the opportunity to navigate. Once you're in the shutdown script of a View there is no going back.