Я не знаю, как сделать запрос, чтобы выяснить уровень доступа, однако, если ваш класс apex использует ключевое слово With Sharing, он будет учитывать совместное использование объекта, поэтому при попытке обновить данные вы получите DML исключение, которое вы можете поймать.
Если вы не используете With Sharing, apex не уважает модель Sharing, и технически пользователь сможет обновить данные, даже если у них нет доступа.
Как указал LaceySnr, если вы используете visualforce, элемент <apex:inputfield>
будет автоматически отображаться только для чтения, если у него есть только доступ ReadOnly.