Alright - first I apologize for taking so long to get back to you on this. My first couple of ideas didn't pan out and I had to step away from the problem and let my subconcious work on it. I also started an unrelated project which took my primary focus for a couple of weeks.
But the answer came to me this week and I worked it out today. Here it is:
THE BASICS:
It works much like the first iteration, except now, instead of turning a wall_toggle on and off, now it re-routes a train using "trigger_changetarget" functions. In each position, the train runs in a loop until the condition changes.
SPECIFICS:
The train is set to automatically run using a trigger_auto which starts it moving, and it never stops running. The up and down positions of the shield each consist of two path_corners each. The train "moves" (more on the quotes in a sec) between the two path_corners of which ever position its in. So, if it is in the UP position the train is "moving" between the 1a and 1b path_corners. Conversly, if it is in the DOWN position, it is "moving" between the 2a and 2b path_corners.
The "a" and "b" path_corners are laid on top of each other, so when you open the RMF, it will appear that there are only 2 path corners (one for up and one for down). Highlight one and drag it away and you will see that another lies in the exact same place. If you place the path_corners for "a" and "b" side-by-side for both the 1 and 2 positions and then compile the map, you'll be able to watch the wall side left and right as it waits for the condition to change and move to the alternate position (up vs down).
Meanwhile, like before, a continuous loop is started with the "zonecheckers". With every pass through the loop, the "zonechecker" triggers the Game_zone_player called "shieldzone". If a player is in the zone when it is checked it fires the "shieldon" multimanager. If there is no player in the zone, it fires the "shieldoff" multimanager.
Those multimanagers control the Trigger_changetarget entites and fire them instantly (hence the 0 value by their names within the multimanager). Each changetarget can only target one entity, so two are needed to re-route the train. "ShieldonCT1" points at the "Shield_path2a" and changes its target to "Shield_path1a". "ShieldonCT2" points at "shield_path1a" and makes it target "shield_path1b". Once the train reaches the top, it is now in a loop between 1a and 1b.
Now, when the player steps out of the zone and the zone is triggered, the "shieldoff" multimanager is fired, which in turn fires "shieldoffCT1" and "shieldoffCT2". "ShieldoffCT1" points at "shield_path1a" and makes it target "shield_path2a" - breaking the train out of its loop and sending it to the down position. "ShieldoffCT2" points at "shield_path2a" and makes it target "shield_path2b", re-creating the "Down Loop".
The "shieldzone" is always triggering over and over, and the change targets are rewriting the path_corners over and over, but since the trigger_changetargets are not "toggles" (meaning they only set their target one way), then it doesn't affect the train's path until the other condition is met.
IMPORTANT NOTE:
In making the multimanager and path_corner loops, I found that a delay MUST be set on at least one of the looping entities. "Zonechecker2", "Shield_path1b", and "Shield_path2b" all have a delay of .1 seconds before they fire. If a delay is not set in a loop, the the map will crash. It will compile fine, but the game engine will crash when the map loads.
Additionally, having such a rapid cycle rate on the loops may cause lag. It makes the shield more responsive, but if you find your map lagging, try setting the delays to .5 to slow the cycling and ease the load on the server. The shield won't respond as fast, but that is the trade-off.
Also, the trigger_autos have delays to allow the map to fully load before triggering. This is to prevent them from firing before their targets exist.
ADDING SOUND:
Currently the shield makes NO SOUND. Because the shield is always moving, if you set the function train to have it's own sound, then it would roar continuously.
Nor can you simply add the sounds to the "shieldon" and "shieldoff" mulltimanagers because you must remember that they are triggering over and over again, even when it appears that nothing is happening.
To add sound to the shield when it moves up and down, you will need to add in 4 additional path corners in between the 1a and 2a path corners (I didn't do that so that I could keep the logic diagram as simple as possible). So, for example, when "shieldonCT1" points at "shield_path2b" and retargets it, it would then point to a new path corner called "upmove1" (or something like that). "Upmove1" would have it's next path_corner as "Upmove2", and "Upmove2" would then send the train to "shield_path1a". You would then set the "Fire On Pass" for each of them to a move sound (pick one from the list of sounds in the trains attributes). The sound would be set to repeat so that it would keep making its moving sound until the "upmove2" turned it back off. You'd then do the exact same thing for when the shield is moving down, calling those path_corners "downmove1" and "downmove2". Like this:

Note that the additional path_corners are placed in between the main path_corners in this diagram for illustration purposes. In reality, you'd overlay them on top of the main path_corners (just like 1a/1b and 2a/2b lay on top of each other) so that the sound lasts until the train actually gets to the destination.
To get even fancier, both "move2" path_corners would actually trigger a multimanager that would both turn off the "moving" sound and would play a "stop" sound - the big "ker-chlunk!" noise that you can set on platforms and stuff (once again, get the noise from the ones listed in the trains "Stop Sound" attribute).
DOWNLOAD:
Here is a link to the zip file which contains the logic.jpg, the autoshield.rmf, and the autoshield.bsp:
autoshield.zip
Hope that helps! Again, sorry it took so long.
D-Gen