To know if an image is in the cache, you can use in Firefox mozIsLocallyAvailable().
There is no such things from chrome or IE.

Do you know any other ways ?

I tried to check for "304 not modified" with Ajax, but Ajax seems to have its own cache system. (Everytime I close the browser, the ajax cache is deleted)

My goal is to detect when my visitors cleaned their cache, so I can restart my "background preloading" system (It's for a game with a lot of images). I've heard a little about AppCache but not enough to know if it can store up to 40mb of images and if it can download them once the page is finished loading.

Regards.