Is there anyway except to find the real OS name of the user?
I need to know if my client are changing their OS name in user-agent header.
No.
Think of the problem this way. There are two remote parties communicating with each other over a single channel. One party sends a message "My name is Peter". Now there is no way the other party to verify the truthfulness of this information unless another authoritarian service which is capable of verifying the details of the parties via an external means is making it mandatory for the first two parties to register themselves.
Unfortunately the Internet protocols are designed to operate in the client-server realm. This means there are no mandatory authoritarian parties which regulate any given communication happening between two individual parties.
The only savior of information verification is cryptography. There two it cannot be applied to all sorts of verifications. Cryptography can be used to overcome problems such as Two Generals Paradox - that is to verify the information received from one party is not intercepted and modified during the course of communication. But there is no feasible solution in the current Internet protocol design to verify information as fundamental as those originated from a source which is not in a domain where the destination has any control over.