I have a question for those of you who scoff at "real-estate agent" and "orange-juice factory" because, after all, there's no ambiguity -- nobody would think "real estate agent" means actual estate agent, and nobody would think an orange juice factory is a juice factory painted orange.
Well, then, where's the ambiguity in "Law Abiding Citizen" or even "40 Year Old Virgin"? The meanings are perfectly clear without the hyphens. Leave them out, then?
You might say the hyphenation of ages is a universally accepted convention, and you'd be right. But what makes "law-abiding citizen" obviously correct and, say, "law-enforcement officer" pedantic and excessive?