Season chicken on both sides with salt and pepper. Heat olive oil in a large pot over medium heat. Add chicken, skin-side-down, and let cook for 25 minutes, or until the internal temperature reaches 170°F, flipping halfway through. Transfer chicken to a plate and let cool.
Remove all but 3 tablespoons of fat from the pan. Add onion and sauté until softened, about 5 minutes. Sprinkle flour over and cook, stirring constantly for 2 minutes. Gradually whisk in milk and chicken stock. Bring to a boil and reduce heat to low. Add thyme and simmer for 10 minutes, uncovered.
Shred cooked chicken into bite-size pieces, discarding any skin or bone. Stir chicken into soup and simmer for 5 minutes. Stir in heavy cream and season, to taste, with additional salt and pepper.