Make sure that the IP addresses aren't using the same network as any other ports on the machines. For example, if the laptop has a wireless connection to your house wireless router and has an IP address of something like 192.168.1.101, then you want to be sure that the network address used between the laptop and the desktop does not use 192.168.1.nn. Perhaps try using 192.168.2.x for the connection between the two computers. Otherwise, the laptop is probably trying to find a computer on the wireless connection.
The network cable should be fine, and you probably didn't even need a crossover cable as most devices now-a-days can sense and reverse the connections if needed. The fact that the ping in one direction work proves that the network ports and the cable are fine.
Definitely make sure the firewall is off, at least on the ports being used between the two computers.
I suspect the reason the desktop could ping the laptop is that the desktop had no 2nd active network connection, so was able to resolve the IP address correctly to the laptop's MAC address. However, the laptop tried using it's other port to resolve the desktop's IP address and no other machine on the home network could answer with the MAC address of the desktop.