Primero, para poder poner a un contacto una foto o también un tono de llamada personalizado, es imprescindible que dicho contacto este guardado en tu cuenta de Google o en la memoria del teléfono. No funciona con contactos que estén almacenados en las tarjetas SIM.
Dicho esto, lo único que tienes que hacer es editar el contacto, y en la pantalla de edición, tienes un hueco para la foto. Si pinchas ahí, te aparece la opción de hacer una foto (si estás con la persona a la que pertenece el contacto) o seleccionar una foto de la galería de imágenes.