The problem with auto-advancing is that you are removing control from the user. Users like to feel like they are in control. If the form starts to advance them through the workflow before they "feel" they are ready, they are going to feel a lack of control:
Most flame wars you read about user interface issues focus on the wrong thing. Windows is better because it gives you more ways to resize the window. So what? That's missing the point. The point is, does the UI respond to the user in the way in which the user expected it to respond? If it didn't, the user is going to feel helpless and out of control, the same way I felt when the wheels of the dough bathtub didn't turn the way I pushed them, and I bumped into a wall. Bonk.
UI is important because it affects the feelings, the emotions, and the mood of your users. If the UI is wrong and the user feels like they can't control your software, they literally won't be happy and they'll blame it on your software. If the UI is smart and things work the way the user expected them to work, they will be cheerful as they manage to accomplish small goals. Hey! I ripped a CD! It just worked! Nice software! Wooooooooooo!
To make people happy, you have to let them feel like they are in control of their environment. To do this, you need to correctly interpret their actions. The interface needs to behave in the way they are expecting it to behave.
Thus, the cardinal axiom of all user interface design:
A user interface is well-designed when the program behaves exactly how the user thought it would.
As Hillel said, everything else is commentary. All the other rules of good UI design are just corollaries.
Source: Controlling Your Environment Makes You Happy
by Joel Spolsky
The other problem beyond how the user feels about the experience is that you do not necessarily know that what the user entered is correct. It may be valid according to your regular expressions and form validation, but it might not be what the user intends to enter. If the form advances as soon as they have entered valid data you are taking away their ability to review to ensure it is correct data.
Giving them a button allows them the ability to review, plus it gives them the sense of control that they are using the form instead of the form using them.