...has a guide for troubleshooting trash problems in Mac OS X.
Files in use by other applications
Use one or more of the following methods if you receive a message
indicating that a file can neither be moved to the Trash, nor emptied
from the Trash, because it is "in use" by another application.
Quit the application that is using the file. This will usually permit
you to then move the file to the Trash or to empty the Trash. If you are
unsure of the application that has the file "in use", the Terminal
command lsof can tell you the name of the process or application that
Mac OS X considers to be using the file, as follows:
Click the Trash icon in the Dock to open a Finder window showing the contents of your Trash.
Open Terminal.
At the Terminal prompt type
lsof followed by a single space, but do not press Return yet.
Drag and
drop the file "in use" from the Trash to the Terminal window. The path to the file will appear after the lsof command:
lsof /path_to_file
Press Return. If the file is "in use" then the
output from lsof will list the names of the applications or processes
which claim to be using the file under the first column heading,
COMMAND.
If the file is "in use" by an open application, Quit that application. If a background process has the file "in
use," use Activity Monitor to terminate that process.
Note: One must
be careful when terminating processes as certain background processes
are needed for Mac OS X. Quitting processes like loginwindow or
kernel_task could force you off your account, freeze your Mac, or
cause a kernel panic. If you do not know what effect quitting a
process may have, do not quit the process.
Empty and recreate an account's Trash
Affected account is admin:
sudo rm -ri ~/.Trash
Affected account is user:
sudo rm -ri /Users/user_name/.Trash
Then log out and back in.
Note: Assure you have typed the command exactly as specified before proceeding as typographical errors in this command can have dire consequences!