For the sake of privacy, much more so than security, you should generate a fresh receiving address for every single transaction.
The privacy problem is this: when you tell someone your public address, they can now associate you with that address, and monitor how much you have (at that address) and who you are sending money to (if they also have that information). They can also give the information to people or organizations that want to track people and their money.
I don't think there is a lot to be gained by using an address for every transaction since that just replaces the need to associate one address with the need to associate multiple addresses. Furthermore, when you spend the money at those addresses, there is a good chance that they will be used together in a single transaction, and thus be associated with each other and linked to you as a result.
Most major BTC clients support coin control, now, where you select the inputs, minimizing or eliminating the risk of adding "You Taint" to other addresses. This can prevent any association with you, so long as you aren't mixing coins from, say, MtGox, with coins you earned or purchased pseudonymously. I mean - I guess it's up to everyone to decide, but I think once you start using Bitcoin as more than a novelty, you maybe don't want a government or private corporation (like MtGox itself) to be able to find out every single person and business you've transacted with. Idunno where you live, but my government doesn't even need a search warrant for most digital information, so maybe I'm paranoid.
Anyway - in most clients, the implementation is super-easy for the end-user, where you just scroll through a list of addresses you've received coins at, and select the ones you want to send from.