Add your oil to a large pan or dutch oven. Once hot, add diced onion and cook for 3 minutes. Add in garlic and cook for one more minute.
Once onions are soft and garlic has browned, add potatoes, cauliflower and chicken stock to the pot and bring to a boil.
Once soup reaches a boil, reduce heat to medium-low, cover, and simmer until the potatoes and cauliflower are fork-tender, about 15 to 20 minutes.
While your soup is cooking, add your rinsed and drained navy beans to a food processor or blender and blend on high until smooth and creamy. Set aside and leave in your food processor or blender.
Once soup is done cooking, transfer 4 cups of the soup to the blender or food processor with your navy beans in it and blend until creamy. If you don’t want any potato or cauliflower chunks in your soup, and you want a completely creamy soup, blend all of it.
Pour mixture back into your pot and add milk, thyme, salt and pepper. Gradually sprinkle in 1/2 cup cheddar cheese and 1/4 cup parmesan until it melts into the soup.
Top with remaining cheddar cheese and enjoy!
Optional: top with bacon and green onion as well.