Melt 2 tablespoons of butter or oil over medium/medium-low heat in a large heavy bottomed pot.
Add in the sliced leeks or onion, and your chopped fennel (if using), and celery. Begin to sweat the veggies in the melted butter over low heat, so they become quite soft but not browned-- about 15 minutes.
Meanwhile shred half of a large head of green cabbage. After the vegetables have been softening for 15 minutes, add in the shredded cabbage, half cup of white wine and the 2 cups of chicken or vegetable stock. Keep it covered and allow to braise for 30 to 45 minutes over low heat until quite soft.
While the cabbage is braising, chop up your other vegetables (see ingredients for details.) Check the cabbage periodically to make sure you don't need to add any more water-- keep the level at or just below halfway up the veggies.
After the cabbage has cooked for at least 20 minutes, but you can wait up to 45 (depends on your rush to get food on the table!), add in all your extra vegetables. Add in some more water water if needed.
Add in the celery salt, caraway seeds and black pepper.
In another small saucepan, melt 2 tablespoons of butter over low to medium heat. Finely mince your garlic cloves and add to the butter. Allow the garlic to start to develop some color but not turn brown--you're going for a pale yellow. After just a few minutes, whisk in 1 tablespoon of flour. Whisk constantly to break up any chunks. Once you have a paste, begin to whisk in 1 cup of heavy cream (or 1/2 cup cream & 1/2 cup stock.) Whisk and continue to cook over low heat until it's slightly thickened, and then add in your cup of grated cheese. Remove from heat.
Stir the cheese-garlic roux into the large pot of soup. Taste to adjust seasoning. Serve warm with some freshly cracked black pepper.