Неидеально, но кажется работает:
$text='Какой-то текст [IMG=3902565d3789b88c50b.jpg] Текст после картинки без переноса[IMG=3902565d3789b88c50b.jpg][IMG=3902565d3789b88c50b.jpg]
Текст после изображения с переносом
Обычный абзац
Текст перед картинкой вконце всего текста [IMG=3902565d3789b88c50b.jpg].';
$split="SPLIT";
$text=preg_replace ("#(.*)(\[IMG\=.+\])(.*)#Uisu", $split."$1".$split."$2".$split."$3", $text);
$t_arr=explode ($split, $text);
foreach ($t_arr as $k=>$v)
if ($v!="") $arr []=trim ($v);
print_r ($arr);
Array
(
[0] => Какой-то текст
[1] => [IMG=3902565d3789b88c50b.jpg]
[2] => Текст после картинки без переноса
[3] => [IMG=3902565d3789b88c50b.jpg]
[4] => [IMG=3902565d3789b88c50b.jpg]
[5] => Текст после изображения с переносом
Обычный абзац
Текст перед картинкой вконце всего текста
[6] => [IMG=3902565d3789b88c50b.jpg]
[7] => .
)