(Resurrecting this as I only just saw it whilst looking for an answer to the other VirtualWire thread)
Your modification very nearly works I just needed to change one line:
uint32_t frequency = speed*8;
because VirtualWire uses 8 samples per bit.
Then I deleted all the Serial.print debugging statements - you shouldn't really use them in an ISR, they are too slow and will ruin the timing of the code.
Attached is the modified file.
VirtualWire.cpp (19 KB)