Si, .. el método seguro que funciona . .pero lo que no te puede funcionar a ti en concreto es el proceso de Upload.
Haz una sencilla prueba ... indica en el método:
$mail->AddEmbeddedImage($archivo,$archivo_id, $archivo_name);
Un archivo que -tengas- en tu servidor. y lo pruebas.
Así descartas problemas de uso de PHP Mailer.
Con respecto a tu "Upload" del archivo, NO deberías usar $archivo .. sino $_FILES['archivo']['tmp_name'] .. y para el nombre definitivo del archivo: $_FILES['archivo']['name']
Si eso te funciona .. directamente no necesitarías hacer más .. pero, por seguir standars de seguridad (muchos servidores con restricciones tipo "safe mode" u "open_base_dir" .. no te dejaran acceder directamente a "$_FILES['archivo']['tmp_name'] que es donde PHP deja temporalmente y con un nombre temporal todo archivo que sube por HTTP vía PHP. En ese caso, tendrías que mover tu archivo con move_uploaded_file() hacia un directorio de tu sitio y ahí tomarlo con el método de PHP Mailer que corresponda, si luego no necesitas el archivo en tu servidor .. lo eliminas (unlink())
Revisa la documentación oficial de PHP al respecto:
http://www.php.net/manual/en/features.file-upload.php
Un saludo,