Preheat the oven to 425°D and spray a square (8x8-inch) baking dish with nonstick spray or butter and set aside.
Bring a large pot of salted water to a boil over high heat in a large saucepan or stock pot. Carefully drop the cauliflower florets into the water and boil for 5 minutes. While it’s boiling, fill a large bowl with cold water and ice. When the cauliflower is done, drain the water off and transfer the cauliflower to the ice water to stop the cooking process. Drain it from the ice bath when it's cool enough to handle then pat it really well with paper towels to remove as much moisture as possible.
In the same stock pot or large saucepan, melt the butter over medium-high heat. Add the minced garlic and cook for 1 minute, until fragrant and slightly caramelized. Sprinkle the flour on top of the melted butter and whisk well to create a paste.
Slowly pour in the whole milk, whisking constantly, and continue to cook until smooth. Continue to simmer the mixture over medium-low heat, stirring constantly, for 2-3, until the sauce thickens. Remove it from the heat and add the salt, pepper, parmesan cheese, and 3/4 cup of the gruyere cheese. Continue to whisk until the cheese is completely melted. Place it back over low heat if the cheese isn’t fully melted.
Add a small amount of the cheese sauce to the bottom of the prepared baking dish and spread it around to the edges. Add half of the partially cooked cauliflower on into the casserole dish then top it with half of the cheese sauce. Repeat the process with the remaining cauliflower and cheese and set aside.
Quickly melt another 2 tablespoons of butter in the pan and add the bread crumbs and cook over medium-high heat for 2-3 minutes, until golden brown and toasted.
Sprinkle the cauliflower with the remaining 3/4 cup of gruyere cheese and toasted breadcrumbs. Bake in the preheated oven for 20-25 minutes, until it’s lightly browned and bubbling around the edges.