The simple fix is to change the user and group ownership of the files making them the same that PHP runs under. With shared hosting (100's of accounts on the same server) a special mod is used to allow PHP to run as your user account. Most likely this is your situation. There are 2 simple fixes for this.
Add the following to your wp-config.php:
define('FS_CHMOD_DIR', (0755 & ~ umask()));
define('FS_CHMOD_FILE', (0644 & ~ umask()));
This will allow WordPress to override your hosts wrong permissions settings.
If this doesn't work you can force WordPress to use FTP to do the upgrade by defining your ftp credentials in wp-config.php
Add these lines to wp-config.php using your information:
define('FTP_PLUGIN_DIR ', '/path/to/wordpress/wp-content/plugins/');
The 2 commented out lines would be used if you access your webhost with SSH and have an SSH private / public key pair.
If your on a private server or VPS PHP will most likely be running as either www-data or nobody. To fix this you would just run
chown www-data:www-data /home/nwalters/public_html/ -R from the command line to repair the ownership.
Hope this helps.