Heat the olive oil in a large pot over medium heat. Add the chopped onions and sweat, stirring occasionally, until translucent. Add the sweet potatoes, carrots and potatoes to the pot and stir to coat in the olive oil. Sauté for a few minutes, then add the garam masala and salt and stir well to combine. Continue to cook, stirring occasionally, until fragrant, about 3 – 5 minutes longer.
Add the coconut milk, stock and bay leaf. Stir well and bring to a simmer. Reduce the heat to low, cover with a lid, and simmer gently for 45 minutes.
After 45 minutes, remove from the heat and discard the bay leaf. Using an immersion blender or working in batches in a standing blender, blend the soup until smooth and velvety. (I prefer to use a standing blender as you get a more consistently smooth soup). Return the soup to the pot and adjust the salt and pepper to your taste. If you find the soup is too thick, you can also dilute it with some water at this point. Rewarm over low heat if necessary.
To serve, ladle the soup into bowls and top each with a dollop of Greek yogurt and a sprinkling of toasted coconut.