Is there any way to restrict user from changing file extensions in Windows XP, Vista, Windows 7?
Nope. The "Hide extensions for known file types" is a preference that you can set via Group Policy. And if it's only a preference, then the user can undo it. Basically, as long as the user has write/modify access to the file, they can rename it to whatever they wish. It's not a Group Policy thing, but an NTFS thing. The only way to really prevent a user from being able to modify the file name of a file is to put the files in a restricted directory to which the user does not have write or modify access to the files therein.
Edit: I just thought of one other idea that might accomplish the desired effect. File Server Resource Manager has "file screens" that can block certain file extensions. This could hypothetically be used to "prevent" existing files from having their extensions changed if that extension is on the blacklist. It's worth noting that FSRM has been deprecated, but is still installable on all modern versions of Windows Server.
Lastly, if you really, really need to do this, you could write your own storage filter driver.