In a large bowl, whisk together eggs, heavy cream, milk, black pepper, and salt. Set aside.
Cook bacon in a 12-inch cast iron skillet over medium heat, stirring, until crisp. Using a slotted spoon, transfer the bacon to a large plate. Drain bacon fat from the skillet then place it back over medium heat.
Melt 2 tablespoons of butter in the skillet. Add onions and cook, stirring occasionally, until tender and lightly browned, about 10 minutes. Add in the garlic, mushrooms, and rosemary and cook, stirring frequently, until mushrooms are golden brown and garlic is fragrant. Season with salt and pepper. Using a slotted spoon, transfer the onions, mushrooms, and garlic to a large plate.
Place the skillet back over medium heat and add remaining butter. Add the egg mixture to skillet, then top with the bacon, mushrooms, and onions. Cook for 4 minutes over medium-heat without stirring or moving the eggs in any way. At this point carefully transfer the skillet to the oven.
Bake until the top is golden brown and the frittata is set; about 30 minutes. Sprinkle the frittata with cheese and place under the broiler until just melted. Serve warm.