Here is an example of what happens, when the user 'mark' tries to login at http://example.com/wp-login.php. Remember that 'mark's' actual blog is at http://mark.example.com/, but he's trying to login at the top level site.
1. DO THE LOGIN
POST /wp-login.php HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: en-gb,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://example.com/wp-login.php
Content-Type: application/x-www-form-urlencoded
Content-Length: 69
log=mark&pwd=xxxxxxxxxx&wp-submit=Login+%C2%BB&redirect_to=wp-admin%2F
HTTP/1.x 302 Moved Temporarily
Date: Sat, 21 Apr 2007 18:24:47 GMT
Server: Apache/2.0.54 (Fedora)
X-Powered-By: PHP/5.0.4
X-totalblogs: 2
X-rootblog: http://example.com/
X-created-on: 2007-04-20 20:23:35
Expires: Wed, 11 Jan 1984 05:00:00 GMT
Last-Modified: Sat, 21 Apr 2007 18:24:47 GMT
Cache-Control: no-cache, must-revalidate, max-age=0
Pragma: no-cache
Set-Cookie: wordpressuser=mark; path=/; domain=.example.com
Set-Cookie: wordpresspass=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx; path=/; domain=.example.com
Location: http://example.com/wp-admin/profile.php
Content-Length: 0
Connection: close
Content-Type: text/html; charset=UTF-8
2. FOLLOW THAT FIRST REDIRECT
GET /wp-admin/profile.php HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: en-gb,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://example.com/wp-login.php
Cookie: wordpressuser=mark; wordpresspass=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
If-Modified-Since: Sat, 21 Apr 2007 18:22:54 GMT
HTTP/1.x 302 Found
Date: Sat, 21 Apr 2007 18:24:47 GMT
Server: Apache/2.0.54 (Fedora)
X-Powered-By: PHP/5.0.4
X-totalblogs: 2
X-rootblog: http://example.com/
X-created-on: 2007-04-20 20:23:35
Expires: Wed, 11 Jan 1984 05:00:00 GMT
Last-Modified: Sat, 21 Apr 2007 18:24:48 GMT
Cache-Control: no-cache, must-revalidate, max-age=0
Pragma: no-cache
Location: http://example.com/wp-admin/
Content-Length: 0
Connection: close
Content-Type: text/html
3. FOLLOW SECOND REDIRECT
GET /wp-admin/ HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: en-gb,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://example.com/wp-login.php
Cookie: wordpressuser=mark; wordpresspass=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
HTTP/1.x 302 Found
Date: Sat, 21 Apr 2007 18:24:48 GMT
Server: Apache/2.0.54 (Fedora)
X-Powered-By: PHP/5.0.4
X-totalblogs: 2
X-rootblog: http://example.com/
X-created-on: 2007-04-20 20:23:35
Expires: Wed, 11 Jan 1984 05:00:00 GMT
Last-Modified: Sat, 21 Apr 2007 18:24:48 GMT
Cache-Control: no-cache, must-revalidate, max-age=0
Pragma: no-cache
Location: http://example.com/wp-admin/
Content-Length: 0
Connection: close
Content-Type: text/html
4. NOW WE'RE STUCK....
The last request/responses are repeated until my browser gives up...
Any ideas?