I'd look for a full disk first.
I'd boot from a live disk and then mount the partition(s) that Ubuntu
is on and check to see if they are full. Something like this:
ubuntu@ubuntu:/mnt$ sudo fdisk -l /dev/sda
Disk /dev/sda: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 993 7976241 83 Linux
/dev/sda2 994 1044 409657+ 5 Extended
/dev/sda5 994 1044 409626 82 Linux swap / Solaris
ubuntu@ubuntu:/mnt$ sudo mount /dev/sda1 /mnt
ubuntu@ubuntu:/mnt$ df -hl /mnt
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 7.5G 2.1G 5.1G 30% /mnt
ubuntu@ubuntu:/mnt$
In this example, only one partition is used, and it's at 30% usage. If
a disk gets to 100% or more (you can get a partition more than 100%
full, as there is space reserved for root), you might have trouble
logging in. I just happened to know that I had one SCSI disk in this
machine (a machine emulated in vmware), if you don't know, you'll have
to play around with "fdisk -l" (warning: fdisk without the '-l' can
destroy your system). A little intimidating to someone not used to the
command line, I'm afraid. IDE disks are /dev/hd(x), starting with x as
'a' and SATA disks are /dev/sd(x) named just like SCSI disks.
Of course, I'm sure there are numerous other problems that could cause
your problem in Ubuntu, but the first step in most troubleshooting
would be inserting an Ubuntu live disk...