Heat oil in a large pot over medium heat. Add leeks, onions and shallots. Add garlic and salt. Cook and stir until vegetables are soft but not browned, about 3 minutes.
Pour stock into the pot; add potatoes, cauliflower and carrots. Bring to the boil; reduce heat to low and cook until carrots and potatoes are soft, about 20 minutes. Use an immersion blender to puree the soup until creamy-smooth, adding more stock if the soup is very thick.
Stir cream into the soup; cook until heated through but not boiling. Add salmon; cook and stir until it flakes apart, 5 to 6 minutes. Season with salt and pepper. Pour into bowls and sprinkle crispy onions on top.