Or maybe the fact that his son is the most wanted criminal in the world keeps him from being promoted? Also maybe age is a factor since Garp's from the same era with Sengoku.
If anything yall should be asking why he isn't the Fleet Admiral.
I feel Garp was probably on his way possibly even an admiral at one point but put in to a bind after Dragon became a revolutionary so instead of quitting and possibly ending up like Tom he just accepted he wouldn't be advancing since putting/keeping him as an admiral would require him to be one of the main faces of the marines great power