Instagram will accept any photo size up to 2048 x 2048 pixels. This makes things pretty simple for those using a camera phone. However there's a catch if you are uploading photos that have been edited on a computer.
Photos on Instagram are resized to 612 x 612 pixels by the Instagram server. The resizing algorithm Instagram uses is not very good. It tends to create pixelation, which leads to jagged edges. Test show that if you do resize your photos it is best to make them a size that Instagram won't need to resize.
The photos below pretty much tell the story. I also tested images at 1224 x 1224 and 1936 x 1936. Both were better than the 640 x 640 image, but still not as good as the 612 x 612 image. The images were viewed on a tablet, computer, and iPhone.