work for
for は「~のために」という意味をもっています。
ですので、
work for は「~のために働く」となり、
雇用された会社のために働く
という気持ちを伝えるときに使います。
サラリーマンが「~に勤める、勤務する」と言いたいとき、
work for を使うとよいでしょう。
I work for Toyota.
私はトヨタに勤めています。
I work for an IT related company.
私はIT関連企業に勤めています。
work at
「で」や「に」と訳すことが多い at は、
場所を表す言葉をその後に伴います。
ですので、どこに勤めているか、どこで働いているのかを
重点的に話したいときは
work at を使うとよいでしょう。
My father works at a hospital.
父は病院に勤めています。
I work at Isetan.
私は伊勢丹に勤めています。

場所を表す at を使っているので、
上記の伊勢丹の文は、
伊勢丹というデパート(建物)の外観や中のお店が
目に浮かんできます。

I work for Isetan. と言うことも可能ですが、
この場合は建物(見える)ではなく
伊勢丹という企業(見えない)に
フォーカスを当てています。
work with
with は「~と一緒に」という意味なので、
work with は「~と一緒に働く」となります。
会社に雇われているというよりは、
自分の才能を売り込んでその対価に報酬を得るような仕事
(歌手、翻訳家、漫画家、写真家など)に
work with を使うとよいでしょう。
My brother works with an apparel company.
兄はアパレルの会社と仕事をしています。
I used to work with Kodansha.
私はむかし講談社と仕事をした。