If you pull the code and it's a VSS, then it's the VSS. If it's something else, remove and re-install the gauge cluster, and see if that makes a difference. The connections are electrical, and vibration can affect them over time because they don't click and lock into place. I'll agree that a CEL doesn't make any sense for this sort of fix because a loose gauge cluster doesn't cause a CEL. But other than the VSS or a loose speedo connection, I don't know what would make your speedo act like that.