I've got a first pass at a DHCP library that works on the Arduino with an Atmega168 MCU. It's working and I'm able to get an IP address, and then connect to Google. It is still really memory intensive - I think I have less than 10 bytes of memory remaining while I'm acquiring the IP address. I've got some ideas on how to lower the memory requirements, but that will require working with the W5100 IC at a lower level. That's my next step, but in the meantime check out this video!