Are you just wanting it to look dirty, or dirty and worn, or dirty, worn and distressed?
I use a misting of flat black, gray primer, brown, and Testor's Dull Cote to give my that dirty, smoked look. If you wash it, it will come off to an extent, so you'll have to re-apply it again.
For the worn (aged) look, you can use a rough grit sandpaper or a wire brush to wear away at the fabric a bit. You could also drag it back and forth on rough concrete (like a driveway).
For the distressed (battle damage) look, you can bunch up a small area and snip away at it with some scissors (dull scissors actually do a pretty good job as they don't cut all the way through it). After you wash it a few time, the ends will fray (depending on what type of fabric it is). Natural materials like cotton work best. Synthetics like polyester just tend to tear and then unravel when washed. You can always singe the fabric in a few spots if you dare, but be warned that it will weaken the fabric. If you do this, stand next to a sink or tub of water in case things go awry. Just be careful.