Optionally you can make a network location (System Preferences > Network) with the same name as the network you're creating. In addition to allowing me to configure my other network connections, this lets me easily revert to my normal networks by selecting my default location when I'm done. The iPhone will remember the password after the first time you join the network, although you may have to select it if there are multiple networks available.
If you get an error message that the network already exists, check to make sure your phone isn't keeping that ad-hoc network alive. Just selecting another network should do it.
-- This script creates an ad-hoc network with a password and changes your
-- network location.
--
-- I just added network passwords and network locations to a script which
-- comes from StefanK:
-- http://bbs.macscripter.net/viewtopic.php?pid=99243
-- Set NetworkName to be the name of the wireless network you wish
-- to create. This will also attempt to set the network location
-- to that name as well.
-- Set NetworkPassword to be your wireless network password. It MUST BE
-- 13 characters long (or 26 hex digits).
property NetworkName : "MyAdHocNetwork"
property NetworkPassword : "thirteenchars"
property CreateMenuName : "Create Network…"
try
do shell script "/usr/sbin/scselect " & NetworkName
delay 2
end try
tell application "System Events"
tell process "SystemUIServer"
tell menu bar 1
set menu_extras to value of attribute "AXDescription" of menu bar items
repeat with the_menu from 1 to the count of menu_extras
if item the_menu of menu_extras is "Airport Menu Extra" then exit repeat
end repeat
tell menu bar item the_menu
perform action "AXPress"
delay 0.2
perform action "AXPress" of menu item CreateMenuName of menu 1
end tell
end tell
repeat until exists window 1
delay 0.5
end repeat
tell window 1
keystroke NetworkName
click checkbox 1
keystroke NetworkPassword
keystroke tab
keystroke NetworkPassword
click pop up button 2
click menu item 2 of menu 1 of pop up button 2
delay 0.5
click button 1
end tell
end tell
end tell

