Ok, here we go (this assumes you are working on an MP map):
1. Create two brushes and place them where you want the two teleporters to be.
2. Texture these two brushes with system/trigger.
3. Select one of them, then right click on the grid and choose "trigger_teleport" from the "trigger" section of the pop-up menu.
4. De-select all, then select the other brush and do the same thing you did before, turning it, too into a "trigger_teleport" entity.
5. De-select everything by hitting escape, and then right click on the grid and create a misc_teleporter_dest entity. Go ahead and make two of them, but don't lose them.
6. Place your two misc_teleporter_dest entities near (but not overlapping) your two trigger_teleport entities. That is, put one of the misc_teleporter_dest entities near one of the trigger_teleport entities, and put the other by the other.
7. De-select all, then select one of the trigger_teleport entities.
8. Shift+select the misc_teleporter_dest entity that is accross the room (or wherever... just not the one that is right next to the trigger_teleport entity you selected in the last step).
9. Hit ctrl+k to "point" the trigger_teleport entity "at" the misc_telporter_dest entity.
10. Rinse and repeat for the other set of entities... you should end up with two red lines (with arrows along their lengths) criss-crossing (depending on how you arranged your teleporters) your map... here, a crude diagram:
T = trigger_teleport
D = misc_teleporter_dest
Overhead view of your map:
Ok, so you'll need to build up some architecture that resembles teleporteres (since trigger brushes become invisible), but this is, basically, how you do it.
As for the two-way-ness of this setup: if you put your misc_teleporter_dest entities near enough to your trigger_teleport entities, it approximates a "two way teleporter system" pretty well. The player won't be able to tell.