Bring a large pot of lightly-salted water to a boil. Blanch the spinach in 2-3 batches (depending on the size of your pot), just until tender (about 30-40 seconds). Strain the spinach leaves out of the water and immediately plunge them into a bowl of ice water to cool.
Drain well and press or squeeze excess water out of the spinach in a fine mesh sieve or a clean kitchen towel. (For the creamiest spinach don't skip this step!) If desired, roughly chop the spinach.
In a large pot or deep skillet, melt butter until foaming subsides. Add onions with 1/2 teaspoon kosher salt and 1/2 teaspoon pepper. Saut� until onions begin to soften, about 4-5 minutes. Add garlic and cook until fragrant, about 1 minute.
Stir in flour and cook, stirring, for 1 minute longer. While continuing to stir, pour half & half into the pot in a steady stream. Add an additional 1/2 teaspoon kosher salt, 1/8 teaspoon nutmeg, and cayenne pepper (if using). Bring to a boil, reduce heat, and simmer until sauce is thickened and coats the back of a spoon, 3-4 minutes.
Add spinach to the pot and stir until well combined. It takes a bit of stirring to get all of the spinach leaves evenly coated with the sauce. If the sauce is too thick, add a little extra milk or half & half until your desired consistency is reached.
Season to taste with salt and pepper and serve.