[Upgrading, Modifying and Unlocking] hillbeast:
I'm currently compiling Android (CM10.1 to be specific) for my ODROID to finish this mod, but it's 90% working and I'll give you details on what I have done.

Basically, the current partition layout on the ODROID is fine, but it's an old fashioned way of handling things, and it's awkward to update kernels (you have to use dd to a set position on the eMMC/SD card to flash it onto the eMMC). What I wanted to do was make the ODROID either have dedicated kernel/ramdisk partitions (similar to Android phones), or alternatively use a boot partition (similar to Linux desktops with /boot containing vmlinuz and initrd etc). It's really not that hard at all to pull this off with the ODROID being so easy to work with (eMMC removable, boot from SD, U-Boot, etc), but I'll run you through what I've had to do and try to go through it in further detail once I've finished the process, and probably upload some binaries so people can try it on their own device.

Note, I'm doing this on an SD card rather than my eMMC so I don't mess with my main Android system on it. I recommend you do this as well until you have it sorted. Also note I am doing this under Linux as Windows requires cygwin to do all this, and cygwin is a pain to tell people how to set it up. Basically, if you don't have Linux, then use Virtual Box and Ubuntu in it or something. It'll be way easier in the long run.

Delete all the partitions on the SD card. Use fdisk /dev/sdb (or whatever the device is for your SD card - I did this on my laptop which has an SD card reader and also a USB SD card reader and they both detect as sdb. Do cat /proc/partitions to see which is your SD card (obviously if you have a 4GB card, then it'll be the device that's 4GB in size).

Prepare your SD card with the ODROIDs bootloaders (BL1/2, U-Boot and Trustzone). I got this in the BSP that Hardkernel provides on their download page, but I'll put it in a smaller package when I make it.

The script flashes BL1, then BL2 at the end of it, then U-Boot, then Trustzone all appended after each other and it will do this with dd if=x.img of=/dev/sdb skip=x, etc.

Create your new partition table on the SD card. This part is awkward because we have the bootloaders at the start of the device, and I'm pretty sure U-Boot wants some space left at the end where it can save its environment settings/variables, so I left 5-10MB at the start of the card for U-Boot. The rest of the space is entirely up to you on how you want it to work, but I did a 50MB boot partition in FAT32 (you could do EXT2, U-Boot should support that too), 512MB for /system (that's about the size of it on my Galaxy S2 and my Nexus 7), 128MB for cache and the rest of the 4GB SD card for data, so 3ish GB for data and media. On a 16GB eMMC you'd effectively have 14-15GB of space for applications and media rather than having it split into 2GB and 12GB or something.

If you really want you can do an SD card partition and do it the old fashioned way, and it won't require a new version of Android, but I wanted to do more work.

When I made the partition table, I made the 50MB boot partition as a primary partition (sdb1) and then made a logical partition (sdb4) in which I made 3 logical partitions (sdb5/6/7) for system/cache/data. I did it that way so that I'm not at the limit of what the MBR partition table supports.

Make the filesystems on the partitions, so mkfs.vfat /dev/sdb1, mkfs.ext4 /dev/sdb5 etc.

Copy your kernel in its raw zImage format and ramdisk image to the boot partition, can call them kernel and ramdisk.img respectively (or whatever you like, I don't care)

Put the SD card in the device with your eMMC in there as well and boot the ODROID, or put the eMMC in your computer with your SD card

Mount the SD card and eMMC

Copy the system partition from the eMMC to the SD card (so if you do this on the ODROID, you will do cp -prf /system/* /mnt/tmp (assuming you mounted the SD card on /mnt/tmp)

Turn off the ODROID and remove the eMMC

Connect the ODROID to UART and turn it on. Provided you haven't mucked up the bootloader by not skipping the first 10MB of the card it should start to boot to U-Boot. You want to stop it and get to the prompt on U-Boot.

In the prompt, we need to change the default_bootcmd. This is the command that U-Boot falls back to if it can't find any boot scripts. You can edit bootcmd, but I don't recommend it. It's best to leave the bootscript functionality there for future endeavours. I changed it to this: "fatload mmc 0:1 40008000 kernel;fatload mmc 0:1 41000000 ramdisk.img;bootm 40008000 41000000". That will load the kernel from partition 1 (boot partition) on MMC 0 and then load ramdisk.img from it. You can change those filenames if you changed the filenames when putting them on the device.

Save the environment in U-Boot (saveenv) and reset the device (reset).

Provided all goes well, the device should load the two images and start booting Android.

You'll need to edit the ramdisk (the fstab specifically) to make it work with the new partitions, and if you went with a /data/media partition like I suggested, you will need to modify the storage_list.xml in the framework overlay in the Android source code and recompile it. As I said, I'll make binaries if you don't know how to do that.

Hopefully my information is clear enough for other people to understand what I'm doing here. If not then ask and I'll try to clarify it.

On a side note: will XDA ever have an ODROID U2 section? It has a Ras Pi section, so I feel that an ODROID U/U2 section is in order.