/etc/network/interfaces

iface eth0 inet static
   address 10.0.0.1
   netmask 255.255.255.0
   gateway 10.0.0.254

iface eth1 inet static
   address 20.0.0.1
   netmask 255.255.255.0
   gateway 20.0.0.254
 NETWORK0                      NETWORK1
         \                            /
          \                          /
           \                        /
            \                      /
             \                    /
          ROUTER0             ROUTER1
          10.0.0.254          20.0.0.254
              \                  /
        +------\----------------/------+
        |       \              /       |
        |       em0          em1       |
        |    10.0.0.1     20.0.0.1     |
        |                              |
        |         FREEBSD BOX          |
        |                              |
        +------------------------------+

Now, You can not use the 'casual' defaultrouter="X" cause it will be only for one network.

We will have to use setfib(1) to create two (or more) separete routing tables per network/interface.

Add these lines to /boot/loader.conf file:

ipfw_load="YES"
net.fibs=16

It will unfortunately require kernel recompile, but its not as that hard:

# cd /usr/src/sys/$( uname -m )/conf
# cp GENERIC /root/ROUTES
# ln -s /root/ROUTES
# echo "options ROUTETABLES=16" >> ROUTES
# cd /usr/src
# make NO_MODULES=1 kernel KERNCONF=ROUTES KODIR=/boot/routes
# mv /boot/routes/kernel /boot/kernel/kernel
# reboot

We can of course set 2 instead of 16, but You will at least have to recompile Your kernel again and reboot which is not very handy ...

Nest set your networks/interfaces as usual in /etc/rc.conf file:

ifconfig_em0="inet 10.0.0.1/24"
ifconfig_em1="inet 20.0.0.1/24"
# check /etc/rc.local for default routes

All the rest configuration resides in /etc/rc.local file:

# define default routes
setfib 0 route delete default
setfib 0 route add    default 10.0.0.254
setfib 1 route delete default
setfib 1 route add    default 20.0.0.254

# assing route tables to interfaces
ipfw -f flush
ipfw add allow    ip from any to any via lo0
ipfw add setfib 1 ip from any to any via em0
ipfw add setfib 0 ip from any to any via em1
ipfw add allow    ip from any to any

These would be handy for restarting:

# /etc/rc.d/netif restart
# /etc/rc.d/local restart

... and thats all folks.