There's lots of ways to do this...what you may want to do is get a WiFi shield for your Arduino, have it run a small web server, listen for web requests then do the hardware magic.
Alternatively, you can run the web server on a PC and have it communicate with the Arduino via the serial port. This would be cheaper than the WiFi shield, but obviously requires a PC that's close to the Arduino and turned on all the time.
As far as an app for the iPhone goes, you could either write one yourself or use something like Ciao (http://ciaoapp.com/
) or just use Safari to talk to the web server on the Arduino.
What you want to do is totally possible, but will require some work. My advise is to get the project working in parts. First get the servers working with the Arduino directly, then add the WiFi, then the web server, etc.