I looked through this:
IPTables forward question
and compared my FW config (two interfaces)
You may need to add the state NEW for new connections ?
iptables -A FORWARD -p tcp -i [incoming interface] -o [outgoing interface] -d [ip address of target server] --dport 80 -m state --state NEW -j ACCEPT
sorry if i'm being vague, its a bit out of my comfort zoneCode:
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:www
Are both devices on the same subnet i.e. the firewall and webserver? If so then you'll need to SNAT these packets as well in the postrouting chain otherwise the packet from the webserver will go directly back to the client which then won't match any connections it initiated, the SYN ACK will be dropped and an RST packet will be sent to close the connection. If they're not on the same subnet let me know.
Also, just a point but the rule in the forward chain isn't required as the chain's policy is accept, unless you specifically put a rule in to drop forwarded traffic all will be allowed with that policy.