That's because your find
commands runs with root rights but not your xargs
.
You want something like this:
sudo find . -iname "*.jpg" -type f -exec identify -format '%w %h %i' '{}' \; | awk '{if ($1>300 || $2>300) print $3}' | sudo xargs -I '{}' mv '{}' /home/simon/decent_size/
I didn't check the logic of your command, just fixed the 'permission denied' problem.