There are two kinds of optical mouses and they work quite differently.
btw, see the "optical flow" sensor, see the
ADNS3080 chip, it has been used in the first series of Microsoft optical mouse.
That would require the robot to be used outdoors - otherwise, indoor positioning is actually a very promising field right now.
the GPS has not a precision of mm (1/1000 of meter), it has a circular error of meters, so you can say the robot is +/- near a position, also you need double precision to evaluate longitude and latitude, plus a correction of geodetical trasform
gps is not so easy to be used, and not so useful, it may be used by fly bot to have an idea of they hot-points.
e.g. the start point is +/- here (around this point with a radius of 2-4 meters), and the destination point is +/- there (around that point with a radius of 2-4 meters)
IMU are able to say you relative movements, for the absolute coordinate you cumulate a lot of errors, also the gyro has intrinsically errors
my conclusion is: use encoders + dsPIC33F to have quadrature, that is the easiest and best performance solution over all, then add other sensors to have a sort of "fusion", this way the bot can handle errors