I've tried (unsuccessfully) a few ways to get this working under ChromeOS. The principles for any other machine should be the same.
For TCP, you should just need to reverse forward a valid, unused X11 port (6000-6099) and then use that value to determine $DISPLAY. It will be something like:
user@local$ ssh -R 6021:localhost:6000 user@remote
user@remote$ export DISPLAY=:21
21 is just an example; you can choose any number you like, as long as the display and local port match. Of course, if your local X11 is running on a port other than 6000, you'll need to modify that port, as well. Unfortunately, it looks like there isn't a way to automate setting the DISPLAY variable (modulo your shell's profile file).