The problem I'm running into is, the old email gets over-written by the new one before it has been verified.
This doesn't answer the question of how to prevent fields from being saved using an UpdateView but it solves the stated problem above.
# views.py snippet
# because we are using the same 'email' variable to add new email addresses
# 'self.object.email' will be saved with the new provided value
# to prevent this from happening, manually set the 'email' variable to the value
# retrieved from the DB
except Account.DoesNotExist:
verifystring = get_random_string()
self.object.email = old_email
self.object.new_email = new_email