The fact that you're getting something but aren't seeing the character being printed suggests it thinks it's receiving something, but it's a non-printing character.
Confirm this by either casting the received character to an int and printing that, or by using a serial terminal that doesn't suck (the arduino ide's serial monitor is garbage).
Assuming that's it, suspect failure to connect grounds or baud rate mismatch. The latter can be caused by wrong clock setting (leading to it not running at the speed you're compiling for) or using the internal oscillator, which is not accurate enough for serial communication without user calibration (factory cal is only to w/in 10%, serial needs 2)