If you're paying through your mobile phone, it's most likely that your app creates and signs a transaction based on unspent inputs available to your address. This is then passed on to the receiver who posts it to the blockchain. This transaction cannot be modified, it can only be posted to the network in order to prove payment. So, from your standpoint, payment through Bluetooth, NFC, or even by sharing the transaction through a QR code is secure.
Unfortunately, as bitcoin is network based, unless you can connect to the network [through the internet] you can confirm nothing, but as the sender of the transaction, you don't really need to. You can/should just assume that the input are spent, because once that transaction is created it can be posted at any time as valid (provided that it's inputs aren't already spent).
You can still check the blockchain at any point in the future when you do have internet access to confirm that your inputs are spent. And if they are not, you can go ahead and spend them in another transaction. When the original transaction enters the blockchain after this new one, it is rejected because it's inputs have already been spent. So, it's actually in the interest of the receiver to post the blockchain and confirm payment as soon as possible. This doesn't really matter for the sender.