Update (Aug 2009): this is a workaround for a bug that's been fixed for a while in the stable bzr versions.
This is something I've banged my head against for a nontrivial while when working with bzr and a subversion repository requiring authentication:
> bzr push http://svnrepos.example.net/trunk bzr: ERROR: Invalid http response for http://.../.bzr/branch-format: Unable to handle http code 401: Authorization Required
Hard-coding 'http+svn' used to work (and give a warning), but it doesn't in the latest versions:
> bzr push http+svn://svnrepos.example.net/trunk bzr: ERROR: Unsupported protocol for url "http+svn://..."
There's a ticket in progress about this issue, but there's a simple workaround: specify the username in the URL with http://username@host:
> bzr push http://email@example.com/trunk