Ambos suelen usarse de forma indistinta, sin embargo en esto radica la diferencia:
por siempre: en cualquier momento del tiempo a partir del cual se expresa, es decir, abarca desde el pasado, presente y se extiende al futuro. Algo que ha venido pasando hasta el momento y que seguirá pasando. Ejemplo: 'te he querido por siempre' aquí claramente se expresa un sentimiento que viene sintiendo desde antes y que continua en el presente con miras al futuro.
para siempre: desde el momento en que se expresa en adelante, es decir, de aquí en adelante, solo con miras al futuro. Ejemplo: 'seremos amigas para siempre' ahí se establece el hecho presente de la amistad, pero no denota que lo hayan sido en el pasado, simplemente que lo serán de ahora en adelante.
saludos :)