Yeah, the recursive backtracker is my favorite. Nicer results, and its very flexible. The other algorithms that I'm going to review are interesting for various reasons, and you can learn a lot about the structure and "essence" of graphs by implementing them, but they aren't as generally useful for maze generation as the recursive backtracker.
Yeah, the recursive backtracker's my favorite as well, plus the algorithm can be multi-purpose. I most recently used it to solve winning positions in a Hex assignment that was due in a couple hours.
Good-looking mazes are not necessarily fun to wander in. The important bit in a maze is the topology, imho, with navigation coming in second (turns can be painful, thin walls can be misleading, corridors can be trivial, etc) and appearance third.
My favourite maze-generating algorithm: consider the graph with one node per cell and edges for all the places where there can be, or not be, walls. Now construct a random spanning tree for the graph, and remove the walls corresponding to edges of the spanning tree. Finally, choose two leaves of the tree (for bonus points, two leaves that are maximally far apart; for even more bonus points, interpret "far apart" in a way that tries to maximize the difficulty of finding the path between them) and label them "start" and "end".
(I first saw this algorithm on a web page of Olin Shivers, who had a nice Scheme implementation. Nice, but slow and memory-hungry. Mine does roughly the same as his, but in reasonably tightly-written C and with some neat tricks to make the output compact.)