postsave stop database update
While I suppose you could empty the $params array, it would be a bit clumsy.  Meanwhile you'll need a way to notify the user in context, so something form-specific would be helpful.

Instead of using hook_civicrm_pre, you might consider using hook_civicrm_validateForm().  You'd be able to run the same checks, but in case the value is no good, you could send the user back to fix it.