You should test your deployment process on private network or test network throughly before trying mainnet. I see you have tested yours on Ropsten, but I would suggest you to test preferably on Rinkeby because in Ropsten block gas limit is too low.
In my experience gasPrice setting in truffle.js is effective. I have successfully deployed my contracts using the following syntax:
geth_mainnet: {
host: "127.0.0.1",
port: 8545, // geth-mainnet
network_id: "1",
gasPrice: 2000000000, // 2 GWei
from: "0x...your-address-goes-here..."
}
Make sure your account has enough funds not only for your smartcontract deployment, but also for deployment of truffle's Migration contract and calls to that contract.