As you have already deduced. This isn't really a hardware project (in the sense that you don't need to build any hardware).
Off the shelf options:
Smart phone (Android, iOS) -- Many existing apps do 100% of your ask. Google Plus uploads pictures by default, so any Android 4.x device with Google Plus integrated will store a copy of all photos taken on the web (defaulted to private). A list of really good camera apps for Android is here. If you google for Android photo booth app, you get literally hundreds more. iOS is similar.
DSLR -- I have a Nikon D200. I used it as a security device in a custom sensor-based application. When a motion sensor was tripped, I would fire the camera and upload the resulting photo. Nikon's SDK (software development kit) has been implemented in several open-source tools like gphoto2 making it pretty easy to automate, but it's expensive.
A plain 'ol laptop -- Any Macbook, most netbooks, etc... feature built in web cams. Just script it.
Little Linux Machines (ex. Raspberry Pi) -- Many little linux computers exist. The Raspberry Pi has several dedicated camera modules available like this one. You could also connect any compatible webcam. I hear that the Logitech ones have good Linux support.
As to your button needs:
Laptops have them built in
You can get all sorts of awesome one-buttons off-the-shelf, like these.
You can attach any mini or partial USB keyboard.
Use a gaming macro keyboard -- These are small keypads with a few buttons like this
Use a mouse -- Attach a mouse and trigger off one of its buttons. Mice are available in tiny sizes for travel if you don't want something full-size.