I see quite a few people here recommend Gandi. I have to say I've had a really bad experience with them.
My biggest gripe is with their architecture, they have a very inflexible system which dictates that one user account is one entity and that entity's details are the same for each contact of each domain that is applicable. This means that if you want to change some detail for a single contact/domain, you have to create a new user account and transfer the domain to the new account. This transfer process is the normal domain transfer process and can be expensive and bureaucratic, even if you're not actually transferring the domain between people/entities. This is not something that they warn you about beforehand. I made the mistake of not checking that all my details on my domains were exactly the same before transferring them and ended up with five different user accounts!
On the plus side they offer two step authentication (although this didn't work out so well for Fastmail) and are very cheap, especially when you take anonymisation into account.