Preheat the oven to 350 F degrees.
Cauliflower: Bring a large pot of water to a boil. Season the water with salt and add cauliflower. Cook cauliflower in the boiling water for no more than 4-5 minutes or just until tender-crisp. Immediately drain over a colander.
Cheese Sauce: In a small saucepan, warm 1 1/2 cups milk, plus a bay leaf over medium heat. Whisk together the remaining 1/2 cup milk and the flour until there are no lumps.
When the milk begins to lightly bubble around the edges, whisk in the flour/milk mixture. Reduce the heat to low and add the cream cheese. Whisk until smooth and slightly thickened.
Discard the bay leaf. Stir in 1 cup of cheddar cheese and whisk just until melted. Then add 1 more cup of cheese, whisking until melted and smooth.
Remove the saucepan from the heat and stir in the paprika, mustard, and salt. Season with ground black pepper, to taste. Set aside.
Breadcrumbs: In a medium non-stick skillet, melt butter over medium heat. Add breadcrumbs and stir until completely coated with butter.
To Assemble: Add half of the cauliflower to a 10 X 10 baking dish. Top with spinach and then the remaining cauliflower. Pour the cheese sauce over the cauliflower. Using a spoon, lightly move the cauliflower around so it is evenly coated with the sauce.
Top with the remaining 1 cup of cheddar cheese, breadcrumbs, and Parmesan cheese.
Bake, uncovered, for 13-15 minutes or just until the cheese has melted. Broil for additional 2-3 minutes until golden brown. Serve immediately.