I have painted 2 garage floors, with mixed success. Note that I have pretty low standards, I'm not trying to achieve the glossy mirror finish like they show in the ads, with a classic mustang parked in a pristine garage. Just a serviceable floor that's brighter and easier to clean than the usual oily concrete.
First floor: I used a 2-part epoxy, IIRC it was made by rustoleum. The house was built in 1958 so the concrete was fully cured. It was fairly clean, without a lot of oil and grease. I cleaned it with simple green, and did no other prep. First coat of epoxy was rolled on and looked great, nice glossy finish. But it was slick as snot when wet. So I rolled on a second coat, with some non-skid grit mixed in. That's when the trouble started. The paint flaked off easily, sometimes in big patches.
Joe Bob says, "Pass on the rustoleum 2 part". Caveat: acid etching the floor might improve adhesion.
Second floor: This time the concrete was of 1977 vintage, very dirty with lots of soil and grease ground in. Several passes with a power washer, simple green, and detergent recommended by the paint mfg. Then, the acid etch. That's the key. The paint is a Behr 1-part . One coat did the job, no non-skid needed and it's not terribly slick. After 5 years it's holding up well, except for a few hot-tire pickup spots.
Whatever you use, prep is the key. The surface has got to be fully cured, clean, and etched. You could rent a scarifier to rough up the surface for better adhesion.
If I were doing it again, I'd probably spring for one of the tile floorcoverings.