A standard firewall/roting sentece/rule for setting up a cheared ineternet connection could look like something like this:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
When you set up this rule you will have to specify which ethernet card that is the outgoing connection. It's nothing dynamic here, it's just static.
If you on the other hand have two scripts one thet specify the one card and one the other, it should be possibly to choose the outgoing connection by rynning the one script or the other. (And this could be done remootly from any workstation.)
I think the cheap and easy solution to this problem vould be to use 2 gateway PC's instead of 1, each connected to one ISP. I have used Pentium 166 in such a role and have worked ok, so this can be done with rather cheap hardware (and free software.)
Then you can chuse if you are using the one or the other connection by specifying the one or the other PC as the gateway. Of couse you could also run 50 % of the clients on one gateway and 50 % on the other. If one line stop you will have the oportunity to reconfigure the gateway setup on the client so its using the other line. Yuo will at lest have "internet connection" as long as one of the lines work.
To set up a double set of gateway PC's should be a quick and simple solution with really no problems.
To set up a SME gateway server with 3 network interfases would be, I think something rather "tricky and unstandard".
By the way there is also other Gateway softwares that can be used if it's just a question of having one alternative gateway. Smoothwall is one good alternative.
http://www.smoothwall.org (Don't have server functions like the SME, only firewall/gateway.)