The main difference is that InnoDB supports transactions while MyISAM does not.
There are numerous other differences, however the common one's i am aware of are:
- MyISAM has typically been considered faster at searching, but recent InnoDB improvements are removing this difference and improving high concurrency workload performance
- InnoDB support transactions whilst MyISAM does not
- InnoDB supports referential integrity whilst MyISAM does not
- InnoDB handles indexes a bit differently, storing the primary key as part of every index (making indexes take up more room on the disk, but also making a covering index more likely)
- MyISAM does table level locking while InnoDB can do row level locking
- Different memory/buffer/index settings are used in the MySQL configuration files
- InnoDB is typically said to have better crash recovery
- As mentioned in another answer, the data is store on disk differently. I believe InnoDB is configurable in this area and can have one file per table etc. if required
I'm sure a google search or the MySQL site will bring up numerous other differences in more detail.