If you rule out a firearm, in reality the most effective option is probably a Taser. The Taser is effective, *if* you can hit the aggressor. Then, you have a 30 second window in which you need to be the heck out of dodge, or restrain the attacker.

OC spray has a large amount of variability in its effectiveness which boils down to... it isn't something you can count on but it is better than nothing.

I don't really trust the pepperball type thingies. They might have more range, but you need to consider the amount of OC they can contain is much smaller, and you don't have the chance to "walk" the spray into the target like you do with an OC stream.

If you go with OC, I'd say go with a good quality OC like Fox Labs, and get the biggest can you can get.

-john