The reason why your code does not show two different values for %ErrorLevel% is because the environment variable is substituted in the entire command line before any command is run. Only then is the command line executed. But you need the second substitution to occur after the ver command has run.
First of all, you could take advantage of delayed expansion, in which environment variables surrounded by exclamation marks are expanded only when the command is about to be run. To turn on this mode, you need to execute SETLOCAL ENABLEDELAYEDEXPANSION
SETLOCAL ENABLEDELAYEDEXPANSION
ECHO ERRORLEVEL has been reset from !ERRORLEVEL! to & verify>nul & ECHO !ERRORLEVEL!
(By the way Delayed Expansion only appears to work in batch files, not at the command line).
Unfortunately, there is no way of preventing the new line from being shown by the ECHO command. So instead, you are forced to do each command on a single line. But fear not, you just need to save all the values you need, and do all the output on a single line.
So your code should be:
@ECHO OFF
SET OriginalErrorLevel=%ERRORLEVEL%
verify>nul
SET NewErrorLevel=%ERRORLEVEL%
ECHO ERRORLEVEL has been reset from %OriginalErrorLevel% to %NewErrorLevel%
Incidentally, don't bother prefixing every command with "@". Just use @ECHO OFF at the top of every script, and no commands will be shown unless you subsequently use ECHO ON.