* Mod_wsgi - standard (and imho best) way to connect code to a web application.
* web.py - a framework for people who don't like frameworks. It does exactly what you want it to do and then gets out of the way.
* SQLAlchemy - the benefits of a smart ORM, from being able to define a Model in native Python to the baked-in protection against SQL injection attacks, more than justify the cognitive overhead involved in learning it.
If what you make is limited in scope and you can easily handle the worlkload then more power to you. But I find that for me it is more efficient to reuse well written code, even if that means I can't claim I wrote 100% of the project.
If a framework limits you, then that is a good reason to roll your own. But that comes at a price, maintaining a codebase is not without cost.
Maybe if there are libraries for all the needs in your language, it is doable. But it seems a bit of a headache. I am not sure I even want to waste time on thinking about my own framework. It is not the most interesting problem (how to write a web framework).
It's extremely unlikely that it'll be improved by someone else in exactly the direction you need it to be improved based on your particular use case.
Depends how important it is to your success though.
I started implementing my own .auth library before I found those two. repoze.who is exactly what I had in mind for an authentication library, and much better architected than my own solution. I don't use any of the existing plugins (apart from openid), so the real win for me is the improved design compared to whatever I could come up with.
I prefer to start small, and add libraries as I need them.
For example, for my current project I was at the point where I needed to add authentication/authorization, preferably with openid support and fallback to a simpler system for development/test installs. I've been able to implement most of this with very little effort by using repoze.who and repoze.what (python). They're flexible enough to do a few things which would be harder to do in a framework where components are written to interface with other parts of the framework, instead of being really generic.
Apart from those two libraries I use beaker for sessions, werkzeug for dispatch, couchdb as a database, mako for templating, my own forms library, etc..
Basically I put together my own framework from already existing components, with a few components of my own for those tasks where I feel the existing solutions aren't good enough or don't solve my problem.
With this approach it does take longer to get up to speed, but you're not tied to any particular way of doing things and can replace any part as needed.