Worksheet can by protected with option AllowUsingPivotTables set to True, but I am not sure whether this allows refreshing Pivots. Additionally, this code may not work with older version of Excel (I am not sure, but some options like AllowFormattingCells are only available since Excel XP).
You could unprotect the worksheet, refresh pivots and reprotect, as suggested above. Such method has only one drawback - if execution in interrupted by user by pressing ESC or Ctrl+Break the worksheet will be left unprotected. You may protect against this with: