First, I wish you luck.
Second, I just did this to my garage.
There are three types of epoxy: water based, solvent based, and pure epoxy. Price is slightly different... but I do not believe by much. Application of water- or solvent- based is easier than pure. I went with pure epoxy as most of the work is prep - however, my application is less than perfect, but you can't tell unless I show you or you look really hard / know what to look for. Benjamin Moore is what I went with.
Prep: I found "Pour-n-Restore" to be the best at removing grease. Takes a lot of patience, as you pour it on, let it dry, sweep it up, let the residue dry, and repeat. It took a few days for mine to fully dry, but it was in April, temps in the 50's plus the shade of the garage. Bottom line: 3 weeks prep time... nothing gets parked in the garage during this time, of course. Also remove tire marks... they are full of some sort of oil. The test is to spritz a little water on the surface and see if it soaks in instantly. If yes, even with a visible stain you should be good to paint.
Prep, part deux: Acid etch. I found diluting the acid ineffective, and went with full strength. WEAR FULL BODY ARMOR... GOGGLES (not glasses), BOOTS, GLOVES, CARBON RESPIRATOR. Use a cheapo plastic pesticide sprayer to distribute the acid - spray it all over the floor. Do not pour the acid onto the floor, it becomes ineffective faster than you can spread it. The acid cannot dry on the surface, otherwise you leave a bunch of crystalline matter "bonded" to the concrete. Rinse, rinse, rinse. Be aware of environmental concerns - do not just dump it down the drain. Plenty of water will dilute the acid - mine drained onto the lawn, and I had the garden sprinkler running, and limed the lawn afterwards. Some people suggest spreading lime on the floor to neutralize the acid, but I found this resulted in a horrible mud that was impossible to clean. Bottom line: it took me four attempts to etch, and the final, full strength etch did the trick. When complete, the surface should feel like 100-grit sandpaper.
Vacuum. Vacuum. Vacuum. Rinse again. Vacuum. Vacuum. Get that floor clean.
Let the floor dry for a week... or at least a few days. Tape a piece of plastic to the floor and see if moisture condenses on the backside. If yes... let it dry. (Matter of fact, this is a good test before you even start... if there is moisture coming through the concrete, the paint will not stick.)
Coat #1 is a clear, pigment free coat. The pigment particles are bigger than the epoxy particles, so a pigment free epoxy will soak deeper into the concrete. Roll this coat on... using a squeejee (spelling?) will not cover the floor, the coat is pretty thin.
Coat #2 is colored... and tricky. If you roll too much, it is discolored. If you roll not enough, it will not cover teh floor, and/or you will have puddles. I found the trick is to paint the edges, then pour the bucket onto the floor. Squeejee it out, then one final roll to smooth the paint. Use golf shoes (or similar spikes) so you can walk on the fresh paint.
Coat #3 is same as #2.
I have two expansion joints on my floor, dividing the floor into quarters. I did one quarter of the floor at a time, as the working time with the paint is less than 30 minutes.
So far is it three months old, and with daily parking on it I have not had anything lift... I suspect something eventually will lift, chances are I missed cleaning a spot here or there.
Good luck!!