How to restrict users from accessing other users profiles and profile data

Like Vincent is telling you can do most of what you want by modifying the page that is used to display the user data, but this requires Coding (it is Velocity)

Note that the data of each user contains a username and a password (and/or other data required to login); which is stored in the same object as the rest of your user data. This means you can not fully block access to the user data. It needs to be read just before you login in order to check if the username and password is correct.

We have the same challenge, so we decided to to create a second user-profile which we store in a secure space, so our default XWiki User only contains limited data (like uName and uPassword) and we used the suggestion of Vincent to not show the other data. So each user has two user-objects, one to allow login and allow the admin to add the user to groups etcetera (the default XWiki.XWikiUser object) and one object where we store the more privat data.