I have an SVN repository (hosted on Dreamhost) with needs-lock set on binary files. It sometimes happen that, while committing files locked and modified by me, the commit fails
Cleanup will not help. That's used for working copy locks, whereas you're running into an issue with files being locked in the repository itself as a means of implementing a mutex between users. See The Three Meanings of "Lock"
You probably have a client that's locking the file(s) for you in a different working copy without your knowledge (either locally or in a WC on your server), or perhaps you've got a WebDAV share that you've mounted and are opening the file(s) there which is causing a lock to be created.