Most Python CMSs are built on Django. They rely on the Django admin for their admin interface. The Django admin is not as intuitive or easy to use as WordPress's admin, even with the customization that some of these tools make. It is great for its intended purpose, but for running a typical blog it isn't as good.
There are no inherent configurable site settings in Django without getting into the code. You can't set the blog tagline, or change a simple setting like "Users must be registered and logged in to comment" from the admin.
Django's templating system does not lend itself toward drop-in themes like WordPress (this is huge). Since Django, and most Python frameworks, rely on reusable apps it's a lot more difficult to create a theme that you can simply load into a directory and use.
I don't think I have seen a Python CMS/blog engine yet that uses widgets. It's almost trivial for a Django programmer to create a sidebar "widget" that shows the most recent 5 posts, but for a casual blogger this is something they can't do.
A WordPress site owner will almost never have to think about the database powering the site. This is another thing WP actually does a good job with. If I upgrade or add a new app in Python I will probably need to migrate and update the DB schema, which means more technical command line work.
Other reasons people have said. Deployment is non-trivial with Python, not every host supports it, etc.