You need to send the mail MIME encoded. If you want to add text too then you need to make it a multipart MIME encoded e-mail:
http://www.zend.com/zend/spotlight/sendmimeemailpart1.php
Take a look at this article and here is some code for HTML based email with an image attachment.
<?php
$image = chunk_split(base64_encode(file_get_contents('picture.jpg')));
$boundary = md5(time());
$headers = "From: \"Test Person\" <test@test.com>\r\n";
$headers .= "To: \"Random Person\" <someone@domain.com>\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: multipart/mixed; boundary=\"$boundary\";\r\n\r\n";
$headers .= "This is an MIME encoded message.\r\n";
$headers .= "--$boundary\r\n";
$headers .= "Content-Type: image/jpeg; name=\"image.jpg\"\r\n";
$headers .= "Content-Length: " . strlen($image) . "\r\n";
$headers .= "Content-Transfer-Encoding: base64\r\n";
$headers .= "Content-Dispostition: attachment\r\n\r\n";
$headers .= $image;
$headers .= "--$boundary\r\n";
$headers .= "Content-Type: text/html\r\n\r\n";
$headers .= "<html><body><h1>Test</h1></body></html>\r\n";
$headers .= "--$boundary--";
mail('person@domain.com','Subject','',$headers);
?>