It is the "wait" command that is killing you, not jamfHelper. The "wait" command, when not passed a process ID, will wait for all background tasks to complete. Since jamfHelper is technically a running app that never quits, the "wait" process will just sit there.
So, to get around this, grab the PID of hdiutil and use that with the wait command. I tested this script on my system and it worked fine:
#!/bin/bash
function imageBackup
{
imageName="test"
hdiutil create -srcfolder "/Volumes/Macintosh HD/Users/swood/Desktop/" -format SPARSE "/Volumes/Macintosh HD/$imageName" &
pid=`ps -xa | grep hdiutil | awk '{ print $1 }'`
wait $pid
}
if [ -f "/Volumes/Macintosh HD/Users/Shared/backup" ];
then
/Library/Application Support/JAMF/bin/jamfHelper.app/Contents/MacOS/jamfHelper -windowType fs -title "Performing Full Disk Backup" -description "A full backup is being taken of this machine. Do not interrupt or power off." -icon /Applications/Utilities/Disk Utility.app/Contents/Resources/DFA.icns &
imageBackup
killall jamfHelper
else
exit 0
fi
I moved the backup processes into a function just for testing, but you could put it back to the if/then format you had it in.