My pet hate is contrib.auth - the models used feel seriously out of date and the whole get_profile() thing feels inefficient and hacky. Almost every client I work with does not want usernames but email login these days and I have to use the same damn workarounds each time. I get the feeling there were some bad decisions made early on in the project - maybe to work around the lack of model inheritance back then - and they've stuck, but still somehow need to be defended.
And yes, for crying out loud, South needs to be part of Django itself. This "we shouldn't have opinions" is a crock. Everyone who needs migrations uses South. When we don't have South but we have a highly opinionated - and practically useless - comments app, that argument doesn't hold water.
Like yourself, though, most of the time Django does what I need, I can make it work, and love 90% of it - the ORM, forms, middleware etc "fit my brain" and work nicely. But the framework still needs a lot of work and some serious wart removal.