This is not a straightforward thing to do. Essentially the process is, on load you check the current form against the one stored in your system, and if it doesn't match, you tell them to go open it from the appropriate location, and then close down the form.
However, you need to keep the forms more locked down and out of the reach of users. SharePoint is not the most secure because a user can download a file, modify it and then upload it again (if they have the right access). A database system is a much more secure means to do this. I've seen this type of security in action with Qdabra.com 's Database Accelerator (DBXL). Developing on this particular form, and trying to do some testing, I ran into a scenario where I wanted to do just as you are saying, and had no way to do it. I was locked out from such changes. As the developer, I had to temporarily add some editable fields to the view in order to get around this.
That brings up another point of security, which is access to the XSN. If a user has access to that, they can modify it to make everything editable, and then what? You need to make sure only the right people have access to modify the XSN. I think DBXL does a better job of locking down access to the XSN than SharePoint does.
Anyway, I hope that gives a little more insight as to what you will need to do.