I got it working.
First of all, it was a hardware problem
I had a cheap-o Linksys switch plugged into the LAN (X0) port of the Sonicwall. The 3Com 4500G switch and my laptop were connected to cheap-o switch. That way the switch and my laptop could both be connected to the LAN (X0) port on the Sonicwall.
Turns out the 3Com switch was plugged into a bad port on the cheap-o switch, making the software settings impossible to properly test. I switched the 3Com to another port on the cheap-o switch.
Then I just had to set up the routes
On the Sonicwall, I configured two routes, so that any traffic destined for VLAN 1 or VLAN 11 IP addresses is routed through VLAN 4094.
Then, on the 3Com switch, I set up a static route to the Sonicwall IP, effectively telling the switch to send traffic to the Sonicwall if it didn't know where else to send it.
With this combination in place, traffic began to flow correctly up, down, and across the network.
Note: Instead of setting up the static route on the switch, I could have enabled RIP on the Sonicwall and broadcast the Sonicwall IP to the 3Com switch as a default route. It would end up in the same place on the switches routing table, supposedly doing the same thing. I might enable RIP and disable the current static route eventually, but it's working for now so I'm going to leave it alone for a while.
Best Answer
It won't work until you do this. If there's no route from one vlan to another, individual packets will be confined to their own vlans, regardless of the destination address. Look through the docs for your switch to find how to set up the routes.