You can create a Package, add the components you want, and then do a normal upload and install process. The advantage of this approach is that the package manager automatically enforces that all required sub-components are placed into the package. For example, if you add an account page layout, the package manager will also automatically select all the custom buttons, the pages for any Visualforce pages linked to those buttons, and the controllers for those Visualforce pages. Note that not all dependencies can be automatically detected, so may still need to go through a few versions to get everything correctly packaged, but it's a lot better than using any migration tool (MM, Force.com IDE, Ant), simply because most of the dependencies are automatically calculated for you. Also, there's no shell scripts to run, no XML files to tweak, etc.
Of course, there are a few downsides. Notably, unmanaged packages can abort because of conflicts (e.g. identical field names on an object). There's also the upload delay, which means that after you click the upload button, it may take 30+ minutes before you can install it elsewhere. Finally, the installer will fail if there are any missing dependent packages or features, many of which you can build into an Ant script, meaning that for a bit of extra XML, you can actually fully automate the installation process.