Fill a large bowl with ice water; set aside.
Bring 12 cups water and 2 tablespoons salt to a boil in a large stockpot over high.
Add spinach; cook, stirring constantly, until wilted, about 1 minute.
Using a slotted spoon or a spider, transfer spinach to prepared ice water; let cool 1 minute.
Drain well; place spinach on a clean kitchen towel and squeeze firmly over sink to remove as much liquid as possible.
Place spinach in a food processor; pulse until roughly chopped, 4 to 6 pulses. Set aside.
Preheat oven to 350°F with rack about 10 inches from upper oven heat source.
Meanwhile, melt butter in a 10-inch cast-iron skillet over medium-high.
Add onion; cook, stirring occasionally, until tender, about 4 minutes.
Add garlic; cook, stirring constantly, until fragrant, about 30 seconds.
Reduce heat to medium.
Stir in flour, mustard, cayenne, nutmeg, and remaining 1 teaspoon salt; cook, stirring constantly, 1 minute.
Gradually whisk in milk until combined; bring mixture to a boil over medium, whisking occasionally.
Boil, whisking occasionally, until thickened, about 2 minutes.
Stir in cheddar and ½ cup of the Monterey Jack cheese; cook, stirring constantly, until smooth, about 1 minute.
Remove from heat; stir in reserved spinach until combined.
Sprinkle evenly with remaining 1 cup Monterey Jack cheese.
Bake in preheated oven until bubbly, about 15 minutes.
Increase oven temperature to broil (do not remove skillet from oven).
Broil until browned, 2 to 5 minutes.
Let stand at room temperature 5 minutes before serving.
