Currently, if a question gets put 'on hold' or is 'closed', the user is asked to edit the question so that it conforms to the website's guidelines.
The problem with this system is that it assumes that moderators are always right. Maybe in the box that says whether a question is 'closed' or 'on hold', there could also be an option to challenge the decision?
If a user wanted to challenge the decision, they would be required to write why they think the decision was wrong and submit it. After it's submitted, the challenge would be sent to a random group of moderators from around the Stack Exchange network.
If they vote that it isn't against the rules, then that would override the original decision.