For me, this problem seems to be related to the value of the $home_path variable that WordPress uses to determine if .htaccess is indeed writeable. My site is hosted at Dreamhost, and I am running php as a cgi, not as an Apache module. I added some debug code to ‘wp-admin/options-permalink.php’ in order to see what value was stored in the $home_path variable. The value was ‘/dh/cgi-system/php.cgi/.htaccess’ which is absolutely not where my .htaccess file resides. Dreamhost offers the option to run php as either cgi or Apache module. I am going to switch to the Apache module option and see if this doesn’t solve the problem.
Edit: Hacking in the correct path to my .htaccess file seemed to solve the problem. I’d rather run php as cgi on a shared host for security reasons.
The fact that WordPress apparently can’t/doesn’t determine the correct path to .htaccess in all situations leads me to believe this is a bug (I don’t recall seeing a requirement that php cannot be run as a cgi).