I always have to try three or four times in order to get all the find options to work correctly, but here's my first guess:
Code:
find / \( -name /dev -prune -o -name /proc -prune -o -name /sys -prune \) -o \( -cmin -20 -a -print \)
The parentheses might not be needed, but I think they are.
BTW, the default operation between find(1) commands is "and" (-a). This means that there is an implied "-a" between "-name foo" and "-prune". Find(1) can be quite annoying. Read the man page and do plenty of test cases.