The way I did it for my Quagmire spell is by placing an activator that casts an area spell. That spell adjusts the target's SpeedMult (with corresponding CarryWeight tweak to force it into effect) based on their distance from the activator. If they're near the edge, they're only slowed slightly. If they're in the middle, they're almost completely halted. It works pretty well.
That's a general-purpose spell designed to affect enemies, though. If it's something that's going to be designed right into a map, you could use a trigger volume and cut the Player's SpeedMult to, say, 50 when they enter it, restore it when they leave. That would be much simpler and require no polling.