The ingredients of a good boss fight are, in my opinion: an impressive-looking boss, a good setting, a strategy that relies on skill rather than luck, and a satisfying end to the fight. As such, I enjoyed almost all bosses in the Metroid series (all the games, not just the Prime ones). They were fun fights that required both thinking and fast reflexes to beat, which added to the satisfaction when you actually beat them. Another game that comes to mind when thinking of great boss battles is Second Samurai, a golden oldie from the Amiga era, which featured the same kind of boss fights as above. More recently, I enjoyed the God of War boss fights for the same reasons.
As for villains, my definition of a good villain is someone who establishes an eerie presence throughout the story, so that every time you meet him/her, you involuntarily gasp and hold your breath in anticipation of something bad that's sure to happen in the next few minutes. A good villain doesn't even need to fight you - he/she just shows up and ruins your day, then walks off to plan further misery for you. In this respect, for good villains I'd nominate:
Kain in the Legacy of Kain series: every time he showed up, you knew you were in for mind games. I'll agree that the storyline was messed up after Soul Reaver, but I still remember that incredible sense of foreboding Kain instilled in me.
The Queen of Blades in Starcraft: unusually for a RTS game (at the time, at least), Starcraft featured a pretty good storyline, and the Queen was a major part of it. We got to see her "transformation" story from start to end, when she comes into her own in the Brood War expansion.
Darth Malak in Star Wars: Knights of the Old Republic: of all the Star Wars villains they have created for games, Darth Malak was the closest they got to making a "new" Darth Vader.
The Queen in Ico: She puts in only a handful of appearances during the entire game, but she is chilling malevolence personified.
The villain(s) in Shadow of Memories (I think it was called Shadow of Destiny for you American people): I'm not saying who in order not to spoil it, but if you play this game, you're in for a twisted time-travelling storyline that, in my opinion, has no equal in gaming. For the better part of the game, you don't even know who the villain is as you do anything and everything to foil his/her (successful!) attempts to kill you. Even when you finally think you know who it is, the game throws another twist at you. A total mind-job.