DH and I budget our money carefully and include a monthly amount for hobby spending for each of us. When the money is gone, we wait for the next month to buy something. The good part, aside from not feeling guilty for the spending, is that if we spend less than the allotted amount one month, it carries over to the next month. When it comes time to get fabric for a new project, I can get it all on one spree. It works for us.