Heat oil in a large stockpot over medium heat. Add the onions and celery and cook until just tender. Add the potatoes, ham and chicken stock, using just enough stock to cover the vegetables and meat.
Bring to a boil, then cook over medium heat until potatoes are tender, about 15 minutes. Season with salt, pepper and thyme.
In a separate small bowl, whisk together the melted butter and flour until smooth. Gradually whisk butter/flour mixture into soup, stirring constantly.
Whisk in Half and Half and cook over medium heat, stirring constantly, until soup thickens, 4 to 5 minutes.
Stir in the cheese and cook, stirring often, until cheese is melted. Re-season soup with additional salt and pepper before serving, if needed. Garnish with chopped green onions before serving.