Great question, I partly agree with @BrunoH here.
The 'Recognition rather than recall' heuristic makes it easier for the users to remember what they did wrong. However, there is a 'bad' side to this. If the user is interrupted during the error correction process, for instance: They get a phone call, the doorbell rings etc. they might think the current input is wrong.
This is where the heuristic 'Visibility of system status' comes in to play, I believe the notification should change when a correct input has been given to something that confirms they did the right thing.
I've created an example with what I mean, if I got interrupted after changing the input I would see an error message. With the notification of the system status I would see that my input is correct.
As a final note, I would try to incorporate the previous error in the status text ('Recognition rather than recall'). So in my example I say 'is not taken' while the error message was 'username is taken'.