Fix: Changed my DHCP address range
After struggling with this issues for several days at home - from having a 4S, a 4 and a iPod touch all working fine to them stopping working on wifi one by one I was getting very frustrated. I tried most of the suggestions in this thread, after hours the only thing that worked was setting a static IP working for the 4 & 4S.
This morning the iPod stopped working and setting a static IP wouldn't work. To me it was a DHCP issue. Sometimes it could find the router (in network settings for the particular access point) but would still only have a self assigned IP address.
I finally thought I'd try something random and changed the address range for the router from 192.168.0.x to 10.x.x.x (different subnet too). My brain does seem to recall something about the 192 range being fallible for some reason.
The ipod started getting a proper IP address, but still had the old DNS for some reason so I had to "Forget" it and connect again - this time it worked.
I went back to the phones and turned them back to DHCP from Static, forgot the network, reconnected and all seemed to work fine.
Oh and in between I turned off my router and let it sit for a good 20 minutes.
May not help everyone but it's another thing to try!
Boomshanka.