It may be grammatically correct, but it's not idiomatic.
"She's been shopping for how long?" would only be used to request a clarification of the length of the shopping trip when the asker either didn't hear, or can't believe what he or she heard.
"My sister has been at the mall for sixteen hours."
"She's been shopping for how long!?"
"My sister has been shopping for mumble-mumble-mumble hours"
"Sorry, I didn't hear you. She's been shopping for how long?
Outside of these circumstances, the normal question would be phrased in the way questions are typically phrased, starting with a question word, and having an inverted verb and subject: "How long has she been shopping?"