dhcp request (ethernet.begin(mac)) hangs in parseDHCPResponse of Dhcp.cpp

It probably thinks it has stuff in the rx buffer when it is empty. The "605 Bug" is the most likely suspect. It affects about all ethernet functions, including udp and dhcp.
http://code.google.com/p/arduino/issues/detail?id=605

Here is a thread where another user had about the same problem with dhcp:
http://arduino.cc/forum/index.php/topic,93623.0.html