It looks like your filesystem is mounted with the noexec option, which forbids executing programs on that filesystem by acting as if all execution bits in permissions were unset. If you use the user mount option (or if some user interface uses it under the hood), noexec is turned on unless you explicitly turn it off with exec.
Most USB sticks use the MSDOS-derived VFAT filesystem, which has no notion of permissions. You can only specify permission bits when you mount the filesystem, and these permissions apply to all the files on that filesystem.
If you don't have permission to execute a script, call the interpreter explicitly:
sh /media/stick/test.sh
For a dynamically linked binary, invoke the dynamic linker.
/lib/ld-linux.so.2 /media/stick/myprog