Could another process be using the file? If a process has an open filehandle then using rm will remove the name but the blocks won't be released until the last process with an open filehandle exits.
If you have an application which uses the file, is it running. Can it be restarted?
Before removing the file you could use fuser to find which processes have an open filehandle:
$ sudo /sbin/fuser /var/log/messages /var/log/messages: 3004