You are trying to build a closed loop control system.
You need to do three things:
Your H bridge clearly can have cross conduction. You should either add some logic or a transistor or two to prevent cross conduction. The H bridge transistors should be fast enough that a fast switching input will be slower than the transistors, so you will not kill anything with a fast input change.
Next you should use an op-amp to generate the error (command-actual) and then follow that signal with some gain. The amount of gain is a calculable number, but beyond the scope of this post. Too much gain and you will oscillate, or chatter, around setpoint. Low gain will end up with greater and greater error. Put in an amp stage with 1-10 gain and a pot to adjust the amount. The output of the gain stage can drive the comparitors, or you can use op-amps as simple comparitors to drive transistors.
Last is is likely you will need some compensation if you need higher accuracy. This is because when you tell the motor to stop, it will still move a bit due to inertia. Most common scheme is to add a lead term (derivative) in the signal from the error amp to the gain stage. This lead term will sum with the error and result in slightly more error, "anticipating" the final set point and cutting off the motor a bit early, and if set correctly the motor will coast into position. This is known as a PD controller.
Using these schemes, accuracies better than 1% can be achieved. The greatest source of error may then be variations in load on the motor which will cause the "over run" due to inertia to vary when you cut off the power to the motor. Higher gains and more accuracy also mean that you will be more sensitive to noise, power supply variations, etc.
paul