Heat the oven to 425°F and toss the cauliflower with the olive oil and 1/2 teaspoon salt.
Roast the cauliflower until browned and barely tender, 18 to 20 minutes, then reduce the oven to 375°F.
Melt the butter in a saucepan, whisk in the flour for 1 minute and gradually add the warm milk.
Simmer until thick, then stir in the Dijon, remaining salt and black pepper.
Fold the cauliflower, cooked chicken and ham with the sauce and spread the mixture in a baking dish.
Top with Swiss cheese and bake until bubbling and browned, 20 to 25 minutes.