ok, glancing through your code it looks like you are trying to do the right sort of thing.
i *think* the problem might be you are trying to send the pulses too close together.
in the line
servo1_timer.teller=(400-servopos1); // 20 ms
try increasing 400 to a higher value.
with servos it doesn't matter too much how often you sent the pulse, as long as the pulse is the right length.
so, that's what i think is causing your problem.
just for the record though, here's a list of things that have caused servo jitter on my projects in the past:
1. too short a gap between pulses. (this is what i described above.)
2. too long a gap between pulses. (this tends to cause the servo to make larger random movements rather than the slight vibration you are describing.)
3. unclean power supply. (try using a different power source. use more capacitors. i saw this once on a board powered from a laptop USB port. weird hu?)
4. interupt from different microcontroller peripheral being called during timing pulse. (i don't think this is your problem as you don't have any interupts other than your timer enabled.)
5. USART being enabled on AVR ATMEGA8. i don't know if this is a problem on other AVRs but i have found the timer on the ATMEGA8 doesn't keep time precisely if you switch the USART on. (again, this is not causing your problem. i'm just putting it in here to be complete.)
so the other thing you could try is using someone else's servo controll program to test your hardware.
there is an example servo controll program in the /examples directory of
http://hubbard.engr.scu.edu/avr/avrlib/.
let us know how you get on,
dunk.