Règle générale:
Dans les noms composés, seuls le nom et l'adjectif peuvent se mettre au pluriel, si le sens le permet.
Exemple: Un sourd-muet / des sourds-muets, une sage-femme / des sages-femmes...
En général, lorsque le nom composé est formé de deux noms unis par une préposition, seul le premier s'accorde.
Exemple: Un arc-en-ciel / des arcs-en-ciel, une gueule-de-loup / des gueules-de-loup...

Cas particuliers:
Quand le premier mot d'un mot d'un nom composé se termine par un o, ce mot reste invariable.
Exemple: Un électro-aimant / des électro-aimants.
Dans certaines expressions au féminin formées avec l'adjectif grand, l'usage veut que grand reste invariable.
Exemple: Une grand-mère / des grand-mères, un grand-voile / des grand-voiles.
Le mot garde s'accorde quand il a le sens de gardien.
Exemple: Une garde-malade / des gardes-malades, un garde-manger / des garde-manger.
Le sens s'oppose à l'accord de certains mots composés.
Exemple: Des pot-au-feu = morceaux de viande à mettre au pot.
Quelquefois la préposition n'est pas exprimée.
Exemple: Un timbre-poste / des timbres-poste (c'est-à-dire pour la poste).
Si le nom composé est formé d'un verbe et d'un complément, celui-ci:
— peut rester invariable:
Exemple: Un abat-jour / des abat-jour, un chasse-neige / des chasse-neige...
— prendre la marque du pluriel:
Exemple: Un couvre-lit / des couvre-lits, un tire-bouchon / des tire-bouchons...
— être toujours au pluriel:
Exemple: Un / des compte-gouttes, un / des porte-allumettes...
— avoir deux orthographes:
Exemple: Un / des essuie-main(s), un / des attrape-nigaud(s)...
