Hi Richard,
Thanks for that quick, detailed and helpful reply - much appreciated.
I didn't realise that I needed a current limiting resistor between the transistor base and the Arduino pin output so thanks for that (circuit I had adapted from ITP site didn't have one) - now I know. Further to this, so I can calculate the resistor that is correct (basically I guessed by using successively smaller ones until I overcame the stall speed of the motor

) what piece of data am I looking for? I understand how to do this with LEDs but not sure if I'm using the motor, the transistor or the combo of both to work this out.
Great pickup on the analogwrite() function as that was what I forgot and it turns out from my earlier testing that if you write bigger than an 8 bit number to an analogue pin it must drop the most significant bit and leave the remainder - thus why I could create perfect cyclical behaviour at exactly 250ish intervals.
So now I've mapped it I just need to understand more about this calculation...
Thanks heaps.
ajfisher