As a Tier 5 Garen, I see the threats to him come in two flavors: match-up threats and permanent threats.
Ekko is a match-up threat. Someone early said that Ekko readily stomped him, but the three times I've faced an Ekko top saw me slaughtering him. And the reason for that is easy. Ekko must get a double hit on his Q to effectively trade with Garen. If you can avoid one or both hits from it, Ekko has a much harder time getting his passive to proc. As well, Ekko's escape is his engage. So if he screws up or misjudges something and used his jump to get to you, he's SOL.
Champions like Fiora, Darius, and Pantheon are all match-up threats. I've both destroyed and been destroyed by these champs on one or more occasions. Personally, I fear a good Fiora more than I do Darius or Pantheon.
Then there are permanent threats. These are the champs who by simple product of their design will fuck Garen up all day long. Jayce is almost the perfect Garen counter. Ranged harass is something that Garen is always weak to. A lot of ranged champs will hurt Garen, like Gnar or Kennen. But what makes Jayce so great as a Garen counter is his melee mode. His Q is a dash + slow to chase when you're ahead. His W is an AoE damage, his E is a knock-back for when you need that distance between you and Garen, and switching into melee mode lets you shred % of Garen's armor and mr.
The day that people recognize how hard Jayce counters Garen is a day I weep.
Other champs that can do bad, bad things to Garen: Elise (Snare, tracking poke, %HP damage), Trundle (AD reduction hurts, man.), Tryndamere (See the aforementioned AD reduction, plus that ultimate.), Gnar (Pokey bastard...).
I did recently have a game against an Irelia that was just infuriating. And since Decisive Strike no longer goes through Dodge, Jax is supposed to be a pretty big deal right now.