Heat olive oil over medium heat in a large soup pot.
Saute onions and garlic for about 5 minutes, until translucent and fragrant, taking care not to burn the garlic.
Add cardamom and cumin, and toast lightly, careful not to burn.
Add cubed squash and stir to coat with oil and spices.
Pour in broth, stir, and bring to a boil.
Reduce heat to a low boil, cover, and cook for 35-40 minutes, until vegetables are tender and easily mashed with a fork.
Strain vegetables, reserving about 2 cups of broth, more for thinner soup.
Puree half the vegetables, reserving half of the squash cubes.
Pour pureed and cubed cooked squash back in pot, add coconut milk and stir. Salt and pepper to taste. Warm and stir to thicken. Serve hot.