Isn't there a simpler way of determining direction based on the direction of current going to the motors?
That'd be hard to do if you used a motor braking system as I've described in Omar's
Motor Controller thread. Also, I don't know if it's good form for feedback control to read signals/power and to use that value to inform your process, rather you should be doing your best to read what's actually physically happening as directly as possible. Otherwise, your feedback gets introverted with circular, self-verifying proof (e.g., send a signal, read the signal, the signal is verified therefore what is expected to happen must be happening - not a good idea). Just saying.
As an example of good and better feedback in a particular situation, supposing you have an encoder reading how far your robot has moved. For the robot's application, you want it to move from where it is across ten feet of floor and stopping just before it hits the wall. Reading the motor current will tell you that your robot is heading towards the wall, but not how far it's travelled. Reading an encoder can tell you whether or not the robot is heading towards the wall, and can speculate on how far away the wall is based on how much the wheels have rotated. But suppose the wheels didn't get good traction, so they spun a bit before the robot started moving? The robot would stop short of its desired position, while presuming it's in the right place. An even better feedback method for this application would be to have a sensor on the front of the robot "seeing" if there is something, like the wall, in front of it.
When I went to an university engineering projects conference last spring, the top guys were all about drilling the students on feedback control. It's one thing to create a process that does something, it's another altogether to build autonomous control so the process works better. Where you draw the line is ultimately subjective, which is why I like the signature someone has on this forum (can't remember who) of "Close enough is perfect."