The inability to upload files in WordPress first showed up in version 2.5. The solution for me was to edit the .htaccess file in the root directory of my webserver (the directory where WordPress is installed). Add the following to the the .htaccess file after the "END WordPress":
<IfModule mod_security.c> <Files async-upload.php> SecFilterEngine Off SecFilterScanPOST Off </Files> </IfModule>
If you are having the problem of your .htaccess file losing its changes, you have most likely put something inside the WordPress block of the .htaccess file. Keep any custom changes outside of that block or they will be overwritten.
It seems that this problem still occurs in WordPress 2.6, but the error message is slightly different — "An error occurred in the upload. Please try again later."
This fix is still necessary in newer versions of WordPress.