Check and make sure that mySQL is not actually running already.
You can do this by checking in Windows Task Manager and looking for either mysqld-nt.exe or mysqld.exe in the running processes list.
You can also check the Status in the Control Panel but the Task Manager is more reliable.
If you have tried to stop the service, some times I have found that the process is still running. I have had to stop it by killing the process in the Task Manager then I can restart it in the Control Panel just fine.
Another method is to run, from a command prompt, the mysql_start.bat and see what error message it provides. Often using the .bat files can provide clues as to why these services are not starting as they should. In the xampp/mysql directory there are a couple of .bat files for installing and uninstalling the mySQL service. Try these from a command prompt and see what error messages (if any) come up.
Without knowing what these error message are anyone here can only guess what the problem might be and offer help based on that guess.
In xampp/mysql/data directory there is a *.err file. Open this in your text editor and check the last line after you have tried to start the service. It might also give you a clue.
HTH