Primitive Elvish Phonetics: [ŋŋ], [ŋɣ] became [ŋg]

Primitive Elvish Phonetics: [ŋŋ], [ŋɣ] became [ŋg]

[ŋŋ], [ŋɣ] became [ŋg]; [ŋ{ŋɣ}] > [ŋg]

In Common Eldarin, a double or dynamically-lengthened ŋŋ became ŋg. This sound change was mentioned several times in both the first and second versions of Tengwesta Qenderinwa from the 1930s [TQ1] and 1950s [TQ2]:

but in Quendian ŋŋ > ŋg (TQ1, PE18/41).
In Eldarin ŋŋ > ŋg (TQ1, PE18/64).
in Quendian ŋŋ > ŋg phonetically (TQ2, PE18/91).
ññ > ñg as in all Eldarin (TQ2, PE18/104).

Tolkien elaborated on this development in some detail in the (Quenya) Outline of Phonetic Development from the 1930s [OP1], and even more in the (Quenya) Outline of Phonology from the 1950s [OP2]:

[ññ] could only occur as a dynamic lengthening, since [ñ] was not used in suffixion: this [ññ] > ñg in CE (OP1, PE19/047).
The long dynamic mm, nn, ññ. ... This is the only source of ññ (since ñ was not used as a suffixal consonant and did not occur as the third consonant of KALAT-bases or kalta-stems) except ññ by nasal-infixion in the rare cases of bases with medial ñ ... These even when ancient remained as long nasals in PQ (mm, nn) except ññ which became ñg. ññ was or became rare, because after the loss of medial simple ñ the relationship of (nil) to ñg became etymologically obscure. A probable example is Q eñge “ago, in the past”, most likely in origin a past formation from √EÑ “be”, though no longer used in PQ (OP2, PE19/96).

Based on these notes, it seems the combination ŋŋ was rare even in Common Eldarin. It only arose (a) as a dynamic-lengthening of ŋ or (b) as the result of a nasal-infix (e.g. in past tenses) before ŋ. The former was rare because the strengthened form of ŋ was more commonly ŋg (which may have aided ŋŋŋg). The latter was rare because roots ending in ŋ were themselves rare.

In notes from the 1930s, Tolkien indicated that primitive ŋʒ [ŋɣ] likewise became ŋg, passing first through ŋŋ:

There are no certain examples of [ʒ] following after other consonants save the nasal infix. Here the phonetic result of ñʒ was ñg > Q. ng. A case is probably seen in Q enge “ago, once (in past)”, originally pa.t. (“it was”) of the √ “be” from which ea is derived, though the pa.t. is from a different stem (OP1, PE19/48).
while ŋŋ, ŋʒ became [ŋg] ... In early formation [mv] > [mb], as [ŋʒ] > [ŋg] ... mv > mb; ŋʒ > ŋg; ŋŋ > ŋg (TQ1, PE18/41).

In the second note, Tolkien indicated that both primitive voiced labial and velar spirants strengthened to stops after a nasal, but the change mv > mb became irrelevant when Tolkien decided v [β] was not a sound in Primitive Elvish. There are, however, notes from the 1950s indicating that the sound change ŋʒ > ŋg remained valid for some time:

Before k, g, ñ remained unchanged. ñʒ > ññ > ñg (OP2, PE19/95 note #131).
There is no certain example of the occurrence of CE ʒ after any nasal save the naturally homorganic nasal infix. In CE ñʒ > ññ > ñg (OP2, PE19/98 note #146).
As noted above there are no examples in Q of [ʒ] following after other consonants, save the nasal infix (homorganic): this ñʒ > CE ññ, ñg (OP2, PE19/101 note #154).

Tolkien ultimately revised all of these notes and removed the sound change ŋʒ > ŋg, probably because he decided the primitive form of this sound was a weak voiceless spirant h rather than the voiced velar spirant ʒ (OP1, PE19/69 note #3). It is not clear, however how ŋh would have developed (assuming it occurred at all).