You shouldn't be seeing the script with ps but you will see command line arguments and environment variables as they are used.
Alas, for "sh" to execute your script it needs to be able to read it.
However you could set up your own shell where all the scripts are owned by some obscure user, and the shell is a set-uid process that flips to that user. But then that user would not have the same rights as the current user.
The thing is that shc works perfect for making scripts invisible but when you do ps you see all the code there. Maybe the best solution is to put some C code inside and then wrap it. Any other ideas ?