I'm pretty sure that the Source Engine is the only engine that will support this out of the box. You can read about some of the technical issues in an article I found on Gamasutra, copied here for future readers:
"Another problem we ran across was the need to change distance-based
systems such as level of detail (LOD) for models, because with our
game, distance is relative to the portal locations.
This means that the distance calculations became a choice of three
lines connecting two points, rather than just one line. Also, line of
sight can pass through a single portal more than once to reach its
The Source Engine does many pre-computed visibility optimizations for
culling. Allowing users to bridge visibility leaves with portals added
another level of complexity.
For better rendering, we implemented a stencil buffer drawing method
for portal views, which gave us a lot of flexibility for handling the
portal recursion depth. This allowed us to render an infinitely deep
number of portals (limited only by performance), which made our
"infinite" hallways look pretty neat.
Stencil drawing also helped us solve the problem of integrating
properly with other technology in the Source engine like HDR blooming.
Since we have to render our scenes an additional two times for our
portals we poured a lot of our effort into making portals render as
fast as possible, such as special view frustum culling based on the
portal's edges, and render list optimizations for portal drawing."
I also remember reading somewhere that there are a lot of special cases, like having portals on opposite sides of the same block. Making portals is not a simple task.
Found an other good article containing this:
Quickly, we realized that we needed a more robust method for rendering
the portals and allowing the player and other objects to move
seamlessly between them. This required us to dig a little deeper into
the Source engine's rendering and physics code, and we had to program
our own portal system.
Basically, we had to tell the Source physics system to make a
temporary hole on only one side of a wall, and that everything behind
the portal is connected to geometry in another part of the map.
Getting this to work and optimizing the solutions to run in real-time
was a major challenge.