“Strap on” is a verb, as in, “I’m going to strap on this dildo.” In queer/kink lingo, the object (“this dildo”) is often left out because it’s implicit in context. (In other contexts, not so much: “I’m going to strap on my seatbelt.” Not that anyone actually says that.) But the phrase “strap on” has two components: strap (a verb), and on (a preposition). Together, they make a verbal phrase. A hyphen is not used because the verb will change form according to person and tense (“I strapped on yesterday,” “she loves strapping on” etc.). So as a verbal phrase, it’s “strap on,” two words, no hyphen.
As an adjectival phrase, it needs a hyphen. The rule is that when two or more consecutive words make sense only when understood together as modifying a noun that follows, those words (excluding the noun) need to be hyphenated. Think of, for example, the phrase “small business.” “I own a small business,” but “I belong to a small-business community.” The phrase “small-business” is an adjectival phrase that describes the word “community.” Another example, taking a verbal phrase, might be “follow up.” “I will follow up with you tomorrow,” but “we need to schedule a follow-up call.” The phrase “follow-up” describes what kind of call it will be.
I know what you’re thinking. You’re thinking, “but strap-on isn’t an adjective!!!!!!!” You’re right, sort of. It isn’t anymore. See above, where I said that the verbal phrase “strap on,” in a queer/kink context, has an implied object. Well, it’s sort of the same thing with the adjective version. “Strap-on” is a modifier to the same implied noun that was the implied object of the verbal phrase. So in the above example, it’s “dildo.” Make sense? (So, in line with these rules, “motherfucking” as an adjective really ought to be “mother-fucking,” and why it isn’t is something I’ll never understand. But I digress.)
Now, through lots of use, “strap-on” has acquired nominal function of its own (as has, for example “follow-up”: “let’s schedule a follow-up for next week”) and doesn’t even need a separate noun to modify. It speaks for itself. But grammatically speaking, it follows the rules of an adjectival phrase.
Okay, grammar lesson’s over. Questions? ;)