It's possible that this isn't working because you have blown your transistor. There are a couple of things which could have blown it:
- No resistor to limit the base current
- No diode to protect against back EMF from the motor
So you should add a base resistor, and a flyback diode.
I always like to add an LED to the Arduino's output too, so that I can see exactly when the output is high. And if you're doing PWM on that pin, then the brightness of the LED tells you the duty cycle.
Added:
The reason for putting the transistor below the motor is that it's easier to make it work. To switch on the transistor, I just have to push a little current through the base by bringing its voltage up higher than the emitter. But if the transistor was above the motor, and the motor was running at 12v, then it's going to be impossible for the Arduino to do this, because it can't generate a voltage high enough.
When you put the transistor above the motor, you need to add another transistor to help you deal with the large voltage required by the base.
In this circuit they're using a FET, rather than an NPN transistor, so the base is called a gate, but the same thing applies.