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.
