EDGE doesn't seem to work on iphones on pay and go; it certainly doesn't on mine. i get the E sign but my connection speed isn't anywhere near as fast as an iphone on an official tariff.
are you getting GPRS?
if not, have you edited 02_UK.plist as follows:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>BookmarkURLs</key>
<array>
<dict>
<key>BookmarkName</key>
<string>O2</string>
<key>BookmarkURL</key>
<string>http://www.o2.co.uk/iphonestart</string>
</dict>
</array>
<key>CarrierName</key>
<string>O2</string>
<key>IntlDataRoamingSwitch</key>
<true/>
<key>MyAccountURL</key>
<string>http://www.o2.co.uk/iphonestart</string>
<key>MyAccountURLTitle</key>
<string>O2</string>
<key>ShowCallForwarded</key>
<false/>
<key>ShowCallForwarding</key>
<false/>
<key>ShowTTY</key>
<false/>
<key>StockSymboli</key>
<array>
<dict>
<key>symbol</key>
<string>^FTAS</string>
</dict>
</array>
<key>SupportedSIMs</key>
<array>
<string>23402</string>
<string>23410</string>
<string>23411</string>
</array>
<key>SupportsNITZ</key>
<false/>
<key>VisualVoicemailServiceName</key>
<string>IMAP</string>
<key>VoicemailPilotNumber</key>
<string>901</string>
<key>apns</key>
<array>
<dict>
<key>apn</key>
<string>payandgo.o2.co.uk</string>
<key>password</key>
<string>password</string>
<key>username</key>
<string>payandgo</string>
</dict>
<dict>
<key>apn</key>
<string>payandgo.o2.co.uk</string>
<key>password</key>
<string>password</string>
<key>username</key>
<string>payandgo</string>
</dict>
</array>
<key>com.apple.voicemail.imap</key>
<dict>
<key>AuthenticationScheme</key>
<string>DIGEST-MD5</string>
<key>BeaconAddress</key>
<string>9011</string>
<key>ClientManagesTrash</key>
<false/>
<key>DataContextIdentifier</key>
<integer>1</integer>
<key>GreetingNotification</key>
<true/>
<key>MaxGreetingDuration</key>
<integer>60</integer>
<key>MaxPINLength</key>
<integer>10</integer>
<key>MinPINLength</key>
<integer>4</integer>
<key>UsesSSL</key>
<false/>
</dict>
<key>voicemail_context</key>
<integer>1</integer>
</dict>
</plist>