I would say that "Aluno" is "the one who attend to classes". And "Estudante" is "the one who studies"
Also, aluno comes from latim and means with no light, that is, he needs someone to teach him. On the other hand, an estudante learns the things by himself, there is no need of a tutor. Nowadays, though, we no longer keep that meaning and use them interchangeably ;)
Love all the comment under this heading... illuminating! Incidentally, estudante is not a "profession", thus I guess one shouldn't drop the "um" and say "Ele é aluno"... is that right?
Na verdade essa não é a etimologia verdadeira da palavra.
Hey, I'm brazilian and for me they are pretty much the same. Most of the time (not all the time) they're interchangeable. In my humble opnion, comparing them to "student" and "pupil" is a good way to see this.