Hi,
I seem to have an issue where I am able to receive data from arduino->hc06->phone but not the other way around. So I am never able to get messages from the HC06.
Is there any know limitation of this for atmegas? I am connected to pin 14 and 15 and I am able to send data, so the TX RX should be fine.
This suggests you are able to send from Arduino, which confirms your wiring and procedures are kosher, but not able to receive from the phone, which suggests your code isn't, but it is, apparently, a secret.
Probably won't make a difference because it's just the logic voltage level, but you should connect the ground on the breadboard to the ground on the Mega to pull the voltage down to prevent damage to HC06.
I don't own a HC06 but if it's anything like the HC-05 then you may need to change the relevant modes using AT commands. master /slave? baud rate? etc
Using software serial on hardware serial pins is a sure recipe for disaster and completely unnecessary.
There is nothing to suggest you need AT commands. You can use it as is.
As others have pointed out you may not need to, your problem is to do with you accidently assigning new serial lines on pins that are hardwired as such to begin with, so you're confusing the arduino I think. I would try setting up the serial lines on different pins.