Well, if the cabinet already has a varnish or primer on it, then you wouldn't normally need to start with a primer. Typically, you only need to prime over bare materials, like bare wood, bare drywall or bare metal.
Since the shelves of this cabinet will be a working surface, you need to use a paint that will dry to a HARD film to stand up better to scuffs and such, so that would mean using an oil based paint, but that would mean you'd also have to contend with some yellowing in that paint because there won't be much natural sunlight in a bathroom.
If she doesn't mind the yellowing, and you can convince her to go with another clear coat, what I'd suggest is to try a "Wiping Polyurethane" that you can buy in any hardware store or home center. These polyurethanes dry to a hard film, but they're very thin as they're meant to be applied with a rag. Basically, you put on a rubber glove, get a rag wet with the wiping poly, and wipe it on your cabinet. You keep the rag in a tightly closed plastic bag with a minimum of air in it between wipings, and you keep wiping until you get a nice gloss on the piece.
If it's gotta be paint, then all I can suggest is to thin any oil based paint with a product called Penetrol (made by the Flood Company and also available at any hardware or paint store) and apply the paint with a small 3 inch roller to get the smoothest non-spray paint job you can get. Depending on the roller you use, you might still need to use a brush to apply the thinned paint in the corners.
If it's gotta be a spray paint, then about all I can suggest is that you spray it with smooth even strokes and don't start or stop spraying in the middle of a stroke. Also, to avoid spraying on so much that the paint sags as it dries (which gonna look like he11), apply multiple thin coats of spray paint to avoid that problem.
Sorry I couldna been of more help.