Here's a couple things I do (and sometimes they even work, LOL!):
1. If I'm at the store I'll put what I want in my cart and wander around with it for a while. That makes me feel like it's mine. Then I put it back and leave the store, happy to have "owned" it for a few minutes.
2. If I'm online, I keep a folder in my email called retail therapy/fabric & fabric sales. When I find something I want I copy/paste the link and send it to myself, then file it in my folder. I can go and look at the fabric any time I want, and it gives me that feeling of it being mine. Since I have the link, if I REALLY decide I need to buy it, I know where to get it. I also put online fabric sales in the folder and often the expiration date passes without me having purchased anything. With the pressure off of having to do something about it immediately , the desire is less strong.
These both have the effect of stashing fabric, but cost much less. That is not to say I don't have a stash, mind you—case in point: I just completed a shop hop and bought something at every store. Thankfully I mostly go for fat quarters and not big yardages!
Also, I have a quilting friend who magically is able to only buy for specific projects. She constantly says "I never buy fabric on spec". You know how you sometimes have those things your mother told you when you were a kid going through your head? Well, often, now when I'm out fabric shopping I have my friend's comment above, going through my head and that helps me curtail the bleeding of money from my wallet. Hope that helps!