In a large pot, add onion, celery, carrots, and potatoes to the chicken broth and bring to a boil. Boil the vegetables for 30 minutes, or until they are tender.
Turn heat to medium low, and add the ham.
In a separate medium sauce pan, melt butter over medium high heat. Whisk in the flour and allow the mixture to bubble and brown for a few minutes. Then gradually whisk in the milk.
Continue whisking the milk until the sauce is slightly thickened, about five minutes.
Add the white sauce to the broth mixture and stir to combine. Add in the corn and seasonings, and let the soup simmer on medium low heat for at least an hour before serving, stirring occasionally. The longer you are able to let it simmer, the more the potatoes will break down and thicken the soup. Taste the soup before serving and adjust seasoning with salt and pepper to taste.