Although I've not tried this, it sounds plausible enough - but will require both client-side and server-side code. It also requires that the server-side page is on the same domain as the pages running this cache check.
Server-side, you would have to have a smart page. The job of this page is to serve different content each time it is loaded... a UUID / GUID, etc. Or even the time and date with msecs... whatever - as long as it is guaranteed to always be unique.
Client-side, you would have an iframe on your page, initially with no source. Programatically, you could set the source of the iframe to the page that generates random content. You would then grab that content, and store it in a variable (this is why the pages need to be on the same domain - security restrictions would apply otherwise).
Then, set the source of the page again, and grab the content that is delivered back.
If the content is the same, the user has their cache enabled. If it is different, they do not.
Give it a bash and see how you go. As I said - not guaranteed to work, but sounds logical enough ;o)
Hope this helps,
Dan