The hardware to run the web server on the arduino would be either the Ethernet or WiFi shield. Alternatively, you may want to run the server on another machine and use the USB serial link from that machine to the arduino to control whether the led is on.
Assuming you want the outside (webserver) to contact your Arduino when an user interaction occurs - and NOT just poll for state changes as an earlier answer explains.
You need your Arduino and an Ethernet shield configured as a "webserver" to answer incoming requests and blink your LED when appropriate. You also need to defeat your local NAT/Firewall with a DMZ or port-forwarding (so the Arduino can be reached from the outside world).
Far more efficient to simply host the webpage on the Ardiuno since it will be accepting incoming traffic anyways.
I would try using Xively
You could have the Arduino running as a server, but that would require a static ip and some port-forwarding to get the Arduino out on the web so that your webpage could POST to it. (By the way I find using GET is simpler than POST for small amount of data.)
Xively is polling based, so your Arduino can be behind a firewall.