Yep, you're screwed. Just kidding. I agree with thetrooper that artillery is the answer. I would try to set the battlefield first, and force them to attack you. Force the AI to go over barren terrain (use your artillery to wipe out the roads and railroads) and then to attack your units fortified in barricades. Meanwhile, you're bombarding them the whole time. The AI is sometimes dumb enough to retreat with all their 1-2 HP units, while advancing with their 3-4 HP units. If you have any way to do it, ravaging the convoy of 1-2 HP units is a great way to level the playing field.
I would make barricades 2-3 tiles deep, connected by railroads. If the AI penetrates a tile, make a few more tiles of barricades in that area. That's why you have worker gangs.
Next tactic is to strengthen the cities the AI is threatening, while weakening other front-line cities. The AI is sometimes dumb enough to abandon the original line of attack and send the Stack Of Doom over to the newly-weakened city. Since I have railroads, I then strengthen that city, while weakening the original target. Some consider this an exploit called "puppet strings". I do not, because it's what I would do in real life.
Hope these ideas help. No matter what- don't give up hope.