I think your problem is due to insufficient refreshing of the servo
Servos don't move instantaneously – the servo you have takes almost two seconds to move 360 degrees. So you need to continuously pulse the servo. It probably needs at least four pulse repetitions at 20ms per pulse to start up and move 10 degrees. Your code only pulses once per position. BTW, your code uses 15ms, 20ms is more common.
You could add some code in the moveServo function to provide more pulses. Perhaps pulse once for every 4 degrees of movement.
Another approach is to use the servo library from the 0012 Arduino release. This moves the servo in background using a timer interrupt so you don't have to worry about repeating the pulses. But your code would need to take into account the time it takes for the servo to move so that its in position and settled before you snap your picture.