One thing that you did not mention was your air filter. Seems like one of the more obvious things, but easily over looked.
I was getting about 21-24 mpg on a good day and the same as you on a bad day before installing my BAT intake and now (as long it is cool outside and the engine temp doesn't rise too high in the city) I am getting around 26-28 mpg and I know that I have a plugged bank 1 precat. Will gut them when it stops raining long enough for the ground to dry up a little.
"I have got to get a heatshield!" (Words I never thought I would hear myself say)