Melt butter in a stockpot or dutch oven over medium heat. Add onion, celery, and bacon, and saute until vegetables are tender, about 7 minutes.
Stir in flour to coat onion mixture. Add chicken broth about 1/2 cup at a time, stirring until smooth before adding more. (If you add it all at once, you will end up with lumps, so don’t get in a hurry. This step will take 3-5 minutes.)
Add potatoes, dill, salt, and pepper, and bring to a low boil. Cook 10-15 minutes until potatoes are tender.
Using a potato masher, mash about half of the potatoes or as much as you would like to get your desired texture.
Stir in corn, vinegar, and milk and return to simmer. Reduce heat to low, and stir in cheese, stirring until thoroughly melted. Add salt and pepper to taste.
To make this a vegetarian recipe, omit the bacon and substitute vegetarian broth for the chicken broth.