| 7:21 am on Apr 19, 2011 (gmt 0)|
Use "Live HTTP Headers" extension for Firefox to check how many steps it takes to get from example.com/index.php (or whatever your index page is called) to www.example.com/. It should be exactly "one", not a multiple step redirection chain.
Check also that the response really is 301 and not 302.
| 7:59 am on Apr 19, 2011 (gmt 0)|
Confirmed that it's exactly one step no matter where you go to on the site (both for sub-pages and the homepage)
Also checked with live http headers (same function as about:net-internals on chrome) and that gives the same result, a 301 redirect. (not 302)
this is very strange...
| 8:59 am on Apr 19, 2011 (gmt 0)|
You can set your preferred domain with-www through Google Webmaster tool console to ensure Google displays URL's with www in search results.
| 9:24 am on Apr 19, 2011 (gmt 0)|
To be very clear on the original test, type "example.com/index.html" into your web browser, and check the results.
Another thing to check is, do any of the internal links point to non-www URLs?
Run Xenu LinkSleuth over the site and study the report in detail (you will surely find other issues that need fixing too).
| 4:32 pm on Apr 19, 2011 (gmt 0)|
I had this issue but on a subdomain. Turned out the place I was trying to redirect to, had a noindex in the meta robots. I'm guessing youll not have differing meta robots.
Definitely check inbound links. I use Seo frog spider tool and it never ceases to amaze me some stuff I've overlooked.
| 5:55 pm on Apr 19, 2011 (gmt 0)|
I changed a site from www to non-www last year, and it took about a month for everything to switch over - EXCEPT THE HOME PAGE. For some reason, Google in its infinite wisdom displayed the home page with www for four months. Despite the canonical tag, despite setting the preference in GWT, despite the 301 in .htaccess. It's now (finally) set correctly. The only thing I can guess is it's because of inbound links, but I do not know.
| 6:12 pm on Apr 19, 2011 (gmt 0)|
I agree with nutmeg, someone is linking your site with non-www. Do a site command with no www to see what comes up. Otherwise it's just G not doing what you want it to, big surprise...
| 7:51 pm on Apr 19, 2011 (gmt 0)|
| 9:26 pm on Apr 19, 2011 (gmt 0)|
| 10:52 pm on Apr 19, 2011 (gmt 0)|
Two very usefule Google searches: