This is really two questions, first, do browsers normally cache images on the client by default or does the server have to indicate that they can be cached?
Browsers cache what they are allowed to. You can globally set those Headers within IIS, but you can almost always override them from within your application. Unless some ssl accelerators or firewalls override them..
Second, given that I do not have access to IIS what can I do in an ASP application to improve client side caching of images.
just look around in System.Web.HttpContext.Current.Response.Cache