Preheat the oven to 425 degrees Fahrenheit and line a rimmed baking sheet with parchment paper or aluminum foil for easy clean up.
Place the cauliflower florets on the baking sheet and drizzle with 2 tablespoons of olive oil, salt and pepper to taste. Toss until evenly coated and spread out into a single layer.
Place in the oven and roast for 30 to 35 minutes or until the cauliflower edges start to turn golden brown and are fork tender.
When the cauliflower is almost done, heat the remaining oil and butter in a soup pot or Dutch oven over medium-high heat.
Add the onion and cook, stirring occasionally for about 4 to 5 minutes or until the onions become soft. Stir in the garlic and cook for about 1 minute or until aromatic. Add the stock, thyme and bay leaf.
Remove the cauliflower from the oven. You can reserve a few pieces of roasted cauliflower florets to use as garnish if desired, then transfer the remaining roasted cauliflower to the pot. Bring to a boil, lower the heat to medium low and simmer for 15 minutes, stirring a few times.
Remove the soup from the heat. Remove the bay leaf and thyme stems. Puree with an immersion blender until the desired consistency is reached or alternatively carefully transfer the soup to a blender and puree working in batches. Be careful when blending hot liquids. The steam will try to escape so holding the lid down with a kitchen towel is helpful.
If using a regular blender, return the soup to the pot and turn the heat to medium low. Stir in the milk or Half and Half, nutmeg and season with salt and pepper to taste. Simmer for about 3 to 4 minutes then serve topped with your favorite garnishes.