Roast the Cauliflower: Cut cauliflower into bite size pieces, toss with olive oil (just enough to lightly coat) salt and pepper and place on one (or two) parchment-lined sheet pans ( in a single layer) and bake until tender and golden, about 20-25 minutes.
Saute the onions: In an extra large skillet saute the onion over med- high heat in olive oil until tender and fragrant, stirring often, about 3-4 minutes. Add garlic and sage and lower heat to medium and sauté 3-4 minutes, until fragrant, season with salt and pepper. Take your time here and make sure onion and garlic are golden and tender. Set aside.
Make the Bechamel Sauce: In a small pot, melt butter over medium heat. Stir until butter just begins to become golden and becomes nutty and fragrant. Add flour. Stir and cook flour for at least 1 minute. Whisk in ½ C hot milk making sure to whisk all the flour from the corners and sides of the pot. Add another ½ C milk, whisking well. Add the final cup of milk, nutmeg, salt and pepper and whisk constantly until mixture thickens and just comes to a simmer. Turn heat to low and whisk in cheese and set aside.
Assemble: Use a greased, oven-proof 10 inch cast iron skillet, 8×11 inch baking dish or greased individual ramekins. Toss the roasted cauliflower with the Bechamel sauce and onions/garlic/ sage mixture. Taste for salt and pepper, adjusting to your liking.
Top with optional bread crumbs (see notes), optional crispy bacon or pancetta (or vegan bacon bits) a few sage leaves or a little more cheese. You could refrigerate this overnight at this point if making ahead (perhaps not in the cast iron). If refrigerating, be sure to bring to room temp before baking.
Lower heat to 375 F and bake uncovered in the oven, until golden and bubbly, about 20-25 minutes.
To make bread the crumbs: In a food processor, pulse 2 slices day old bread with one clove garlic, a few sage leaves, 1-2 tablespoons olive oil and a pinch of salt. ( Or simply toss bread crumbs with olive oil and and salt)
You can also steam the florets in a steamer basket instead of roasting- but be sure not to overcook. Al dente is BEST.
This can be made ahead, but I would bake it before serving.