How do I stop registered users from changing their details like their username etc (via edit profile) in the frontend?
components\com_users\models\forms\profile.xml and then edit:
<field name="password1" type="password" readonly="true" />
You can at the 'disabled attribute to the input fields u don't want to be changed. Most of the users won't fiddle around with you page's source code.
<input type="text" disabled="disabled" />