Yup, mine turned out to be just a bad connection. I bought a new VSS anyways because at the time I didn't know.
When I did my engine swap, the VSS missed getting unplugged so when the engine was dropped down, it pulled until the wires broke free. I put them back in and it worked perfectly, but over the winter, they came loose again. I could of just pushed and locked the wires in tighter instead of replacing the sensor.
Also, a bad VSS or bad VSS wire connection would throw a CEL. Mine actually showed 2 codes for the VSS wires.
If there is no codes, then I would suspect a speedo problem.