Over the weekend our guild had 2 day long workshops. We use the practice of a $20 deposit, and if you show up, you get your check back. If something major happens, and you can't make it, we would decide if you get your check back. Most likely, you would. You have to realize that for many people, just not feeling like coming is a good enough reason to not show up.
When there are a limited number of spaces, it is only fair to do this. We had many workshops, that half the people just didn't show up, and people who didn't get a chance to sign up were upset. If you went to a major show and signed up for a class, you would be paying way more than $20 for the class.
Our guild will continue to use this practice.