Yesterday I had to go to the bank, and my youngest said he wanted to see that the thrift shop next door had to offer. So I thought "Yay! An opportunity to make a donation!"
I asked my son to follow me to his room and we pulled out all his shirts and I held them up one by one and asked "Keep or Donate?" When he looked like he might be waffling, I gently reminded him that he had lots of shirts and if this one wasn't one he loved that it still would be a NICE thing to donate. After that was done, we went through the same routine with the pants. To show him that I wasn't picking on him, we went to my closet and I let him chose a dress that he thought was "hideous" and a pair of flip flops that are a garish color (he was getting impatient so I didn't push farther). The loot stuffed one of my extra fabric shopping bags (that I was planning to donate).
Banking, donating and browsing was all done efficiently and my son didn't even find anything he wanted to buy (except a bag of candy from the pharmacy next door... so close!).
I think it may be something to consider as a new habit as a compliment to the one-in-one-out rule. Fill a bag for donation before even going to the store, it's worth a try to do it every time.