Caching on SharePoint is a tricky thing. I have also experienced this behaviour, when the file was refreshed on the filesystem, I could see the changes in it if I opened it on the server, but web browsers were retrieving the old (chached) version, even if I pressed CTRL+F5.
Later edit: I have experienced this odd caching even if we performed IISRESET during the deployment of the new files. It was simply independent of the server, it was the cache of each and every user's browser. We could have either sent out a communication, that they should clear their cache or press CTRL+F5, but that would have seemed pretty unprofessional from the IT department. We also analyzed the possibility of creating a policy which would force everyones browser to clear its cache, but the network team objected, that this would cause an unnecesary and high traffic, because thousand of users would download again the files from the servers, and most of those haven't even changed. Cuasing all the fuss just for one or two files out of 15-20 was not making sense.
End of later edit
Fortunately, there is a simple solution to this: whenever you change a js, css or even an image file, add a diferent revision number to its URL. For example:
Version 1 -->
Version 2 -->
You can add anything in the querystring, it can be a hash of the file, a guid, just make sure that it will be different whenever the file changes. (And it would be nice if you would make sure that the query string changes only when the content of the file really changes, else you force the browser to retrieve the file from the server fot nothing). Sharepoint is already doing this. If you observe the corev4.css or sp.js references, they all have a revision number in the querystring.
You can obtain this revision number easily by using a method in SPUtility, which works only for files on the file system (which is your case) which generates a correct revision number for the referenced files.
Please check SPUtility.MakeBrowserCacheSafeLayoutsUrl and this other stackexchange post for more details.
Later edit: as it seems from some of the comments in the linked post, MakeBrowserCacheSafeLayoutsUrl is not always working as expected. I haven't used it in production yet, so I can't confirm or deny this. But we have succesfully used version numbers in production environment, the version being generated via a script during build by TFS. But you can also update the version by hand whenever you change the content. And this is guaranteed to work everytime, no need to clear the browser cache, and it works for both files on the file system and the content database (like references from style library)