How to permanently redirect port 80 to 8080 on OS X?

Use ipfw as in @bindbn's answer. That's the general idea.

Persistence:

put your rules into a file :

/etc/ipfw.conf

add at the very top of your file

flush

Ensure that there are not leading or trailing whitespaces in any line.

add to /Library/LaunchDaemons/com.yourdomain.ipfw.plist :

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>Label</key>
    <string>com.yourdomain.ipfw</string>
    <key>Program</key>
    <string>/sbin/ipfw</string>
    <key>ProgramArguments</key>
    <array>
      <string>/sbin/ipfw</string>
      <string>-q</string>
      <string>/etc/ipfw.conf</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
  </dict>
</plist>

Either reboot, or

launchctl load -w /Library/LaunchDaemons/com.yourdomain.ipfw.plist

the first time.

After that it is

launchctl load com.yourdomain.ipfw

Use ipfw(read http://discussions.info.apple.com/message.jspa?messageID=10945451 http://discussions.apple.com/thread.jspa?messageID=10996939&#10996939)

ipfw add NUMBER fwd 127.0.0.1,8080 tcp from any to me 80

or http://www.hanynet.com/waterroof/