Create Udev rule
SUBSYSTEM=="block", KERNEL=="sd*1", ACTION=="add", RUN="/usr/sbin/usb_autorun.sh %E{ID_FS_LABEL} %E{ID_FS_UUID}"
>
Create autorun wrapper
#!/bin/bash
SCRIPT=autorun.sh
autorun() {
    if [ -z ${1} ]; then
        FILE=/media/${2}/${SCRIPT}
    else
        FILE=/media/${1}/${SCRIPT}
    fi
    sleep 10
    if [ -f ${FILE} ]; then
        /bin/bash ${FILE}
    fi
}
autorun $@ &
>
Create autorun.sh script on your USB device (example)
#!/bin/bash
USER=$(who | cut -d" " -f1 | head -1)
MAILTO="YOU@YOUR_DOMAIN.COM"
LOG="${0%/*}/backup.$(date -I).log"
CMD="/bin/bash ${0%/*}/backup.sh | tee -a ${LOG}"
if [ -f /home/"${USER}"/.Xauthority ]; then
    # try to open xterm
    export XAUTHORITY=/home/${USER}/.Xauthority
    export DISPLAY=:0.0
    notify-send -i drive-harddisk-usb "Backup" "USB backup started"
    xterm -e ${CMD}
    notify-send -i dialog-ok "Backup" "USB backup completed"
else
    # no X11, run on console
    ${CMD}
fi
# send log by email if sendmail available
if [ -x /usr/sbin/sendmail -a -n "${MAILTO}" ]; then
    # change user for nullmailer
    NULLMAILER_USER=info
    echo "Subject: Backup Log from ${HOSTNAME}" | cat - ${LOG} | sendmail ${MAILTO} 
fi
>