Try to pick your battles. some things don't matter. At that age we'd skip the bath several nights a week, it just wasn't worth the effort. Dinner, DS eats or doesn't eat, up to him. Don't mention the toilet for a while, he'll come back to it when he wants to.
I would seriously consider loosening up the routine a bit too, or changign things around if you can. Talk him through what's coming next (or use the picture idea if you think that'll work better), that always helps us.
If you put your back up and try to assert yourself absolutely you will have a fight every time. That's why it's best sometimes to just step back a bit, get some perspective on the things that really need to happen and those that can slide. Otherwise you will both just get into the habit of fighting about everything. What are his language skills like?