I hear you, I find that most issues boil down to miscommunications and mis matched expectations. Sometimes it is unavoidable as some people look you right in the face and nod when they have no idea what you are talking about and once you build it they say "that is not what I wanted". Also some clients think because you build something for them you are on call 24/7 for anything including "why is their computer going slow"
I'm sure everyone knows you need to put everything on paper in advance, explain payment terms, warranty periods, be firm on scope changes (that you don't do them or they cost). If you do something for free, let the client know you are doing it for free or it is out of scope otherwise they wont know what costs money and what does not.