Try this
var_dump($this->helper('catalog/image')->init($_child_products[$i], 'image'));
var_dump($this->helper('catalog/image')->init($this->getProduct(), 'image', $_image->getFile());
My guess is each of the above var_dump statements will dump a PHP object to the browser/output-environment, (or cause possibly cause a "memory exhaustion" fatal error if you don't have xDebug installed).
Now try this
var_dump((string) $this->helper('catalog/image')->init($_child_products[$i], 'image'));
var_dump((string) $this->helper('catalog/image')->init($this->getProduct(), 'image', $_image->getFile());
You should see your identical strings. The init method returns an object, which means when you're doing your equality check, you're checking for quality on the helper objects. In Magento, objects instantiated as helpers are, effectively, singletons, which means multiple instantiations will return the same object, which is what object equality checks for.
When you cast these objects as strings, (with (string)), PHP converts the object to a string (using the __toString method defined on the object.
When you use an object in "string context" (in an echo or print statement, or somewhere else PHP expects a string), PHP will automatically cast the object as a string.
So if you want to do an equality check, cast the objects as strings first.
if ((string)$this->helper('catalog/image')->init($_child_products[$i], 'image') == (string)$this->helper('catalog/image')->init($this->getProduct(), 'image', $_image->getFile()) ){
echo 'true';
}