I'll add my $.02. This shield may be a perfectly good piece of hardware, but the software is just barely functional. After experimenting with it on both an Uno, it became pretty clear that the TCP/IP stack consistently runs out of memory. Only the very most basic sketch using a completely stripped down set of libraries can run. Trying to do anything useful overruns RAM and crashes/resets the Uno.
I even went as far as to get a Mega to try things with more RAM. It does require some playing games with jumpers to get the pins on the shield to match up with the slightly non-standard Mega config, but even after that, it still failed to run for very long before resetting.
This is incredibly frustrating because there really doesn't seem to be a viable, functional WiFi shield for Arduino. I don't know why no one has produced one yet. Using an ethernet shield with an external router or WiFi bridge is just not an option for a mobile system, so I wish people would not always assume that their hard-wired, tethered, nailed to a wall socket solution is the only way to get wireless connectivity. Totally defeats the purpose of "wireless" to require a box that has to be plugged in to do WiFi...
First of all, there are functioning Arduino WiFi shields. However, depending on what you indent to do within your project there may be limitations due to the hardware/WiFi chips/modules used on these or due to th libraries that you need to use in conjunction with these WiFi shields.
There are a couple of products that come to mind: The WiFi shields at diysandbox.com seem to be nice products alas a tad expensive. There are the WiFly Shields on Sparkfun and there are likely more.
The CuHead is a clone of the Asynclabs WiShield and the original libraries originate from Asynclabs. Unfortunately Asynclabs went out of business. As such there is little to no development on the hardware or software side of that shield. The uIP stack used on the WiShield is an implementation of a IP stack used in many embedded devices and is actually very small in memory footprint.
The reason I suggested using an Arduino with an Ethernet shield connected to a pocket router is not that this is the only functioning solution! However, it has a few very nice advantages over a WiFi shield. This solution by definition is fully compatible with the Arduino Ethernet library. There are other libraries that rely on the Ethernet libraries, in particular some low level functions that directly interface with the Wiz510 chip on the Ethernet shield. Such as the ArdOSC and DHCP/Bonjour libraries.
That is hard to replicate with any WiFi shield as you'd have to replicate these functions with commands that communicate with the WiFi chip that's on your WiFi shield. In my case I decided it was not worth the trouble.
Then there is the cost factor. I am using a Teensy++ ($24) with an adapter board ($7 ?) and a WIZ5200 Ethernet Module ($19) connected to a TP-Link TP WR703n router ($27 on eBay). The Arduino Hydrogen WiFi shield from Diysandbox.com cost $75. You do the math ;-)
The above combination is not much bigger in footprint than an Arduino UNO with a WiFi shield stacked to it. The router accepts 5V DC power so you can run connect it to the appropriate Arduino pins.
Yes, I would like to see an official Arduino WiFi shield as well ( it was announced almost a year ago) but while others are waiting, I already have a well functioning solution. It may not be the most elegant one, but it does function flawlessly and actually offers benefits even an Official WiFi Shield will be hard pressed to offer.
For example the router can be easily configured using a web interface. I don't have to write or modify code and upload it to the Arduino to change basic IP settings. It is sold thousands of times and likely the software is relatively bug free, which is unlikely with a home grown solution. And, in case of the 703 or the TP-Link TP MR3020 the adventurous ones can flash openWRT, an embedded Linux router onto it. That's a lot of stuff you get for less than $30!
I bet with a little mechanical work I'd be able to fit the Teensy++ and the Ethernet module into the little Router housing to make it more mobile.