90% of self defence is avoidance and 10% is physical techniques when you get attacked.
The most important thing is awareness, being aware of your surroundings and who is near you. A lot of attackers will rely on the element of surprise. They can't take you by surprise if you are switched on and can anticipate attacks. Being aware means you anticipate an attack which is about to happen and that gives you two choices-you can either run away if possible or seize the initiative and make a pre-emptive strike.
It sounds simple and obvious but it is very hard to remain aware at all times, it takes a lot of practice. It's very easy to slip in to a day dream. Never listen to music in public, not only does it advertise something to steal (your mp3 player) but hearing is the only sense available to you if someone tries to attack you from behind.
The best advice I can give is to buy the book 'dead or alive: the choice is yours' by Geoff Thompson. That book potentially saved my life. I've been a victim of crime twice and it taught me how I could have avoided both attacks. That book will teach you how to avoid crime, it won't teach you how to fight. If you want to learn how to fight to defend yourself, you need to join a class.
You mentioned body language, it is important. Criminals will prey on vulnerable targets. If you look confident and aware of what is going on around you, there is less chance they will pick on you and will overlook you for weaker prey. I recommend getting the book 'What every BODY is saying' by Joe Navarro which not only helps you to read other people's body language but to become aware of your own body language. Not only will that help you avoid becoming a victim, it is useful in all areas of life, for example, job interviews.