Zen are great.
If Virgin cant prove your under contract (because they have "lost a phone call" or whatever) that's their problem not yours.
The onus is on them to prove this I believe.
I would write them a letter and send it recorded and give them 7 days from receipt of letter to provide evidence of any contractual obligation.
You could also mention in this same letter, that even if you WERE under contract, which according to own records you are not then they are breach of contract for failing to provide the level of service for which you are paying.
But I don't know if I would bother with the latter. Simply saying "my records say im out of contract, prove im not" and giving them 7 days notice to provide it should do.