I believe there may be some files still held open by some processes. You can try to list them using,
lsof | grep username | grep deleted
A more better version would be to use,
lsof +L1 | grep username
However, sometimes there might be discrepancy in the output between `du` and `quota` which is explained in this link. Excerpt from the link,
> In Unix, the du and quota commands may report different values. The reason for this discrepancy is that the process which goes through the file system, checks quotas, and updates the usage tables only runs at specific times. Therefore, there will be periods between quota checks that the quota -v command will report incorrect disk usage. Use the du command for the most accurate information about the size of your files.