How can I appropriately turn the question back onto the user when they've come to me without having done the necessary homework first?
First, check you're able to communicate as efficiently as possible: make sure you're doing this face to face if possible, possibly in their work environment where they can show you the problem. Over the phone is usually fine too because that's immediate. You're already working to fix 'crossed wires' and a complex problem. Firing back questions one at a time over email is frustating for both of you.
Second, explore the problem with them: the user doesn't know what 'homework' they need to do and you usually can't tell them what 'homework' to do because it's a complex problem that you've only just now heard about. They may even be under the impression that they've thought it through enough, on the basis that they've spent several exhausting hours in meetings with senior stakeholders agreeing what needs to be done. You may need to remind them that you've not been with them on this journey and they you need to be let in on the process. Normally, I'd start with a couple of open-ended questions and focus in on just the important details as you go, then build up a picture of the problem. For example:
Them: I need you to make these changes to the customer database, it's part of Project Maximum Business Value, so by Friday would be good!
You: OK, those are some quite big changes to an important database. Could you tell me a little more about what you're trying to achieve?
Them: We need to store customer satisfaction information. The Sales Director needs this in the database.
You: OK, so where does this information come from?
Them: The survey we're writing.
You: And who fills it in?
Them: Oh, the survey software is going to do that, the Sales Director has got someone lined up to make that happen but he needs the database changed before he can start work. When do you think you can do that?
At this point, I'd establish your conversation goal, something like:
You: OK, before I can give you a timescale I need to make sure I know exactly what you need so I can ensure it's doing what you want.
... before following up few more things about the process, e.g. how do customers get the survey, who needs the data, what do they use it for, when, etc. and identify who holds the information you'll need to complete the request.
So here, rather than dismissing the problem or the solution, you've identified the intention, some motivating factors, some of the interactions that the request will involve. If you simply demanded a better spec, you would have got more detail on a potentially bad solution, you'd have lost a day on an urgent issue, and you might still not have picked up on some of the ominous things you might have spotted in that exchange. Your customer would also be annoyed at you for saying no and making them do more work. The same principle applies - but faster - in conversation: avoid questions which basically say "explain that again but better": keep the conversation moving: if their answer is unintelligible, break the question down or ask from another angle, or just move on and come back to it.
At this stage you're still not directly challenging them on elements of the plan that might be unwise, you're just identifying where they are for your own benefit. This is important because you need to get a complete picture of what's required, and disagreeing at this point may prevent that. It's often a good idea to finish this part of the conversatin by restating what you've been told to check you understand it correctly.
Third, prioritise the challenges: Once you have an idea of the scope of the issue, you will be able to differentiate between inconsequential details - which you can sort out later - and serious shortcomings which will mean the customer won't get what they want or the solution will threaten more important goals. You will also hopefully begin to have an idea of who is involved and why, so you can identify which problems you can solve right now with the person in front of you and which need input from others.
Fourth, explain the hardest challenge, along with steps to meet it:.
You: You've said that you want to track satisfaction so you can identify which distribution channels work, but that information isn't linked to the customer database at the moment. Can you find me the person in fulfilment who can help make this happen?
Depending on the circumstances, you can also start to come up with solutions to other problems:
You: You're talking about adding satisfaction information to the customer table, but you send the survey after each order, so it actually relates more to the order.
By participating in this process, some users will learn to do some of it for themselves, or at least have enough information that they can answer more of your questions next time. By gathering information in front of them and proceeding to use that information, you'll also demonstrate the value of providing information, i.e. that you can do a better job when you know the background. But that only works if you're transparent about what you're doing and why, and explaining things in term that they are familiar with (and, ideally, in concepts that they will value).
Ultimately, however, you are (I presume) paid to help others solve their problems and some of that means working through the problem with them, and some people will always need that more than others. The more people who form your 'customer base' the fewer opportunities you have to 'educate' them and therefore the more you will just have to accept the inevitability of ill-thought-through requests. Just be sure to let people know you appreciate it at times when they do learn.