This is what I came up with, and it works good.
Drives 3 servos at different speed rates.
I´m sure it is not the best way to do it, it is still a work in progress.
I hope someone more skilled can take this further. 
It would be cool to drive the servos in a way that they arrive all at the destination at the exactly same time.
Another cool feature could be to implement the Tween class, or something similar...
Updated Code:
/*
This sketch cycles three servos at different rates. Still a work in progress.
Sorry for my english :-)
www.guilhermemartins.net
*/
// ======================================================================== Servo library
#include <ServoTimer2.h> // the servo library
// #define MIN_PULSE 750 // minimum range - 0
// #define MAX_PULSE 2250 // maximum range - 180
// define the pins for the 3 servos
// maximum is 8 servos
#define servo1Pin 2
#define servo2Pin 3
#define servo3Pin 4
// servo REAL names
ServoTimer2 servo1, servo2, servo3;
// I use this variables to pass the servo names from one function to the other
ServoTimer2 servo1Name, servo2Name, servo3Name;
// actual positions
int actualPos1, actualPos2, actualPos3;
// destination positions
int dest1, dest2, dest3;
// speed
int inc;
// ======================================================================== Metro library
// http://www.arduino.cc/playground/Code/Metro
#include <Metro.h>
// this metro is just a way to have a continuos call of diferent positions for the servos
// it call the setupServoParams function every 4 seconds
int servo1_duration = 4000;
Metro servo1_metro = Metro(servo1_duration);
int servo1_control = 0;
// this metro is used to update servoControl function
int servoControl_duration = 99999;
Metro servoControl_ID = Metro(servoControl_duration);
// ======================================================================== Setup()
void setup() {
Serial.begin(9600);
// attach pins for each servo
servo1.attach(servo1Pin);
servo2.attach(servo2Pin);
servo3.attach(servo3Pin);
}
// ======================================================================== Loop()
void loop() {
// this metro is activated when the actual position is diferent than the destination position
if (servoControl_ID.check() == 1) {
servoControl(servo1Name, servo2Name, servo3Name, dest1, dest2, dest3, inc);
}
// this is just a continuos call for the servoControl function
// every 4 seconds the positions are changed and updated
//servoControl(servo1, servo2, servo3, servo1position, servo2position, servo3position, speed);
if (servo1_metro.check() == 1) {
if (servo1_control == 0) {
Serial.println("1");
servoControl(servo1, servo2, servo3, 750, 750, 750, 10);
servo1_control++;
}
else if (servo1_control == 1) {
Serial.println("2");
servoControl(servo1, servo2, servo3, 1750, 1750, 1750, 20);
servo1_control++;
}
else {
servoControl(servo1, servo2, servo3, 2250, 2250, 2250, 4);
Serial.println("3");
servo1_control = 0;
}
}
}
// ======================================================================== servoControl()
// this function makes the servos move
void servoControl (
ServoTimer2 _servo1Name,
ServoTimer2 _servo2Name,
ServoTimer2 _servo3Name,
int _dest1,
int _dest2,
int _dest3,
int _inc
) {
// activate the metro for position update
servoIntervalReset(10);
servo1Name = _servo1Name;
servo2Name = _servo2Name;
servo3Name = _servo3Name;
dest1 = _dest1;
dest2 = _dest2;
dest3 = _dest3;
inc = _inc;
int val1 = servo1Name.read();
int val2 = servo2Name.read();
int val3 = servo3Name.read();
int newPos1, newPos2, newPos3;
if (val1 > dest1) {
newPos1 = val1 - inc;
} else {
newPos1 = val1 + inc;
}
if (val2 > dest2) {
newPos2 = val2 - inc;
} else {
newPos2 = val2 + inc;
}
if (val3 > dest3) {
newPos3 = val3 - inc;
} else {
newPos3 = val3 + inc;
}
// check if values are all updated
if (val1 == dest1 && val2 == dest2 && val3 == dest3) {
servoIntervalReset(99999);
}
// write the new positions for the 3 servos
servo1Name.write(newPos1);
servo2Name.write(newPos2);
servo3Name.write(newPos3);
}
// ======================================================================== servoIntervalReset()
// metro reset function
void servoIntervalReset(int duration) {
servoControl_ID.interval(duration);
servoControl_ID.reset();
}