Can someone please help me with a complete step by step guide to share my internet connection (which is through a USB modem by ZTE) with my iphone 3G?
Create Wireless (Ad-Hoc) Network
First make sure that your wireless network is enabled by hardware switch.
Click the network menu (located in panel, top right in Unity). Select Create New Wireless Network from the menu.
Enter a Network name and password. You can also create a network without any password. For that change wireless security to None.
After you click on Create, a new wireless network would be created. Note that if you were already connected with some wireless network, that connection would be disconnected.
Edit Wireless Network
In case you want to edit an earlier created network (like if you want to change the password), go to the network menu again and select Edit Connections...
From here, you can change the Network Name, Security Settings and passphrase. You can also modify more advanced settings like the Band and Channel, IPv4 and IPv6, MAC addresses, Basic SSID (BSSID), MTU, Automatic Connection (Creation), and the Availability of this to other users on your machine.
Delete/Disconnect Wireless Network
To disconnect a wireless network, again go to network menu. You will see your network listed under the heading Wireless Networks. Click on Disconnect option just below it. Network manager remembers all the wireless networks that you created/joined. To delete them, go to Edit Connections under network menu, choose the network and select the Delete option.
Please have a look at Ubuntu Wiki.
If you still couldn't solve the problem, check this Tutorial How to share wired internet through wifi in Ubuntu (non Adhoc)
If you cannot use this solution for some devices(for me android), please try these solutions: