Boil the spinach in salty water for about 90 seconds. Submerge in ice water to stop the cooking, then squeeze the greens dry. Chop roughly. This blanching can be done a day ahead if need be. You do it to preserve the vivid green in the leaves.
In a cast iron pan (mine is 10" wide), heat the mushrooms over medium-high heat, shaking the pan a little. At some point they will give up their water. When this happens, add the garlic and a little salt. Let this cook until most of the water has evaporated, then add the butter and sauté until you get some browning on the mushrooms.
Beat the eggs with the cream, then whisk in the cheeses and the chopped spinach.
Drop the heat to medium-low and stir in the egg mixture. Try to make sure everything is well distributed. Let the frittata cook undisturbed, slowly, until the eggs are mostly set, about 10 to 15 minutes.
If you want, finish the frittata under the broiler, just to get some browning. Remove and let it cool 5 to 10 minutes before slicing.
Notes
If you want a creamier frittata, add another tablespoon or two of cream. And you can use whole milk instead if you want.
Keys to Success
Use full fat dairy. When you use low fat dairy, the texture can get chalky.
For every 6 eggs you use, use about 1/4 cup of that dairy. That ratio can be scaled up.
Cast iron is king. It's oven safe, holds heat well, and is non-stick if you've seasoned it right.
If you want different cheese, use a melty cheese like gouda, Swiss, cheddar, jack or mozzarella.
Slow and low on the stove. You want to gently set the frittata, and that takes time. Don't rush things.