How do I get iPhoto's facial recognition to stick?
It didn't happen to me with the latest version of iPhoto yet. But the only solution I found to fix this kind of issues in iPhoto '09 without trashing the entire iPhoto library was to remove only the Faces related files. With the '11 version the procedure would be:


Close iPhoto
Find your iPhoto library
Right click on the photo library and chose "Show Package Content"





Navigate to the Database directory






Edit: If you save your iPhoto library regularly you can restore the files instead of deleting them. To open the iPhoto bundle in Time Machine follow the instructions in this answer. 




Depending on your version of iPhoto you might have to right click on Faces.db and "Show Original"


 

Delete the original Faces.db in the newly opened folder.




Delete the 2 Faces files in the Database directory





Relaunch iPhoto
Go to your Photos library





Select all the pictures (click on a picture then  &#x2318;+A to select all pictures).
Then in the "Photos" menu select "Detect Missing Faces"




You could also try removing only some of the files in the Faces directory before and relaunching iPhoto to check which file might be corrupted in your case.