This is a permissions issue. You need to do two things: 1) update the Web.config of your project to impersonate, and 2) update the folder permissions to allow Read/Write access to the IUSR account on your machine. Here are the details:
First, Add this to your Web.config in the system.web node:
<identity impersonate="true"/>
Now, go to the root folder of your Web site in Windows Explorer, right click it, and click the 'Properties' option.
Then go to the Security tab. Click the 'Edit...' button next to the text that says 'To change permissions, click 'Edit.'
You will see a list of Groups or user names. Underneath that box, click 'Add...'
In the next window 'Select Users or Groups', click the 'Advanced' button on the bottom left.
Click the 'Find Now' button on the right. In the search results, look for an account called IUSR_MachineName (where machine name is the name of your computer). Select it by left clicking it, and then click 'OK'
Click 'OK' on the 'Select Users or Groups' window
In the list of groups or usernames, locate the IUSR account that you just added, and make sure that at the bottom the boxes for Modify, Read/Execute, List Folder Contents, and Read are all checked as 'Allow'. Note: You don't have to use Modify, but if you have any code that writes to the file system, you will need that checked.
Give that a shot.
For information's sake, the reason why it works from localhost, but not remote, is because the worker process is identifying you as an authenticated user. The instructions above are forcing IIS to use the 'Internet Guest Account' and then you are manually giving the permissions needed to that account.
One last final note, is that if you still have a problem, you might want to try giving the same access (using the steps above) to the 'Network' and 'Network Service' accounts. I don't think they matter (I'm pretty sure they were for Vista, but I could be wrong), but just in case.