VirtualWire does not necessarily return a proper zero-terminated character string. If you want to print at text message as text, you have to terminate the string properly and possibly also cast it correctly.
Try this (untested):
if (vw_get_message(buf, &buflen))
{
buf[buflen] = 0;
Serial.print("Received: "); //corrected spelling
Serial.println((char *)buf);
}