iSSH supported opening tunnels. For example, I can set a tunnel on local port 4444 that points to an IP address and port 80. Opening localhost:4444 in Safari then loads that website through the tunnel. iSSH also has good support for saved configurations and public key authentication.
Under the App Store rules, iSSH is only allowed to keep the connection open for up to 10 minutes in the background, so after 9 minutes or so I'll get a notification and the tunnel will be closed if I don't switch back to iSSH quickly enough.
As of 2015, iSSH isn't available anymore. The same functionality likely exists in other iOS SSH clients, but I haven't tried any myself.