Heat oven to 425°F. Remove the stem from the butternut squash and cut squash in half vertically. Scoop out the seeds. Line a baking sheet with parchment paper and lay the squash on the baking sheet. Rub the flesh with the 2 teaspoons olive oil and season generously with salt and pepper. Lay the squash cut side-down and roast until very tender and a fork can easily go through the skin, about 45 minutes to an hour. Let cool.
Meanwhile, heat the 3 tablespoons of coconut oil in a medium soup pot over medium-high heat. Add the two small chopped onions and season with the 2 teaspoons of salt. Let cook, stirring occasionally, until they start to become tender and are beginning to caramelize.
Add the 4 cloves chopped garlic, the 1/4 cup chopped ginger, and continue cooking for a minute more. Add the 1 tablespoon garam masala and toast the spices in the oil, stirring constantly.
Add the vegetable broth and bay leaves and bring to a boil, then reduce the heat so the soup is gently simmering.
Once the squash is cool enough to handle, scoop out the flesh into the soup pot and discard the skin. Let soup simmer until onions are very tender. Remove from heat and let soup cool slightly. Remove bay leaves.
Transfer to a blender and carefully blend the warm soup, starting on low, then gradually increase the speed until the soup is very smooth. You can also use an immersion blender right in the soup pot if you have one of those.
Return the soup to the pot and add the coconut milk. Cover and keep warm over low heat while you make the garnishes.