Cable Length Measurement
Possible solutions:


Use a sensor from "modern ball-less mouse".  Essentially this is a image sensor + processing that can detect motion.  Point it at the cable and follow the motion data that it sends.  Possible problems:  Cable might be too thin to be detected properly, or too uniform in color, or move too fast.  Could also get confused if the lens gets dirty/wet.
Put a magnet on the reel, and use a hall-effect sensor to detect the magnet.  It could be done "outside the reel", to retrofit existing reels.  Also, it's non contact and can be completely sealed against water.  Downsides: Might not work depending on how the reel is shaped, and has limited resolution/accuracy.
Mark the cable with either bar-codes or colors or stripes.  Then detect these optically as the reel spins.  It could be something as simple as changing color every foot or meter.  This could be super easy to implement, or super hard.  It all depends on how complicated you want to get.  Reliability could range from super reliable to super not.  
Do what US2012 suggested, which is to have some sort of measurement wheel/pulley that the cable moves over, and the measure the rotation of the wheel.  This could be problematic if the cable gets wet and slippery, but there might be ways around that.  IF it works, then it should be fairly cheap and reliable.  But it might not work.
Have a different sensor that detects the depth of the cable remaining on the reel.  This could be a simple arm that slides over the cable on the reel as it turns.  The angle of the arm changes depending on how much cable is left on the reel.  This could be a fairly cheap and robust way to measure, but has the worst accuracy of them all.


Of all of these, and without knowing the details of your situation, my preference would be for #2-- putting a magnet on the reel.  It has reasonable accuracy, high reliability, simplicity, and can be easily retrofitted to an existing reel.