If you can assume bash, it's simple:
/bin/bash -c "$(printf "%q " "$@")"
For POSIX sh:
quote() {
for arg
do
var=$(printf "%sx" "$arg" | sed -e "s/'/'\\\\''/")
var=${var%x}
printf "'%s' " "$var"
done
}
/bin/sh -c "$(quote "$@")"