Q:

Icon path in .desktop file

On my desktop I have a .desktop file. If I type:
Icon=/home/ianbell/Pictures/myLogo.png

the icon of the .desktop file changes (the expected result).
But, if I type:
Icon=~/Pictures/myLogo.png

it doesn't work.
Isn't ~/ a shortcut for /home/$USER?

A:

The use of paths in a .desktop file
In a .desktop file, you need to use absolute and full paths. Therefore ~ is not expanded.
This is a commonly made mistake :)
Exceptions concerning icons are a.o. described here:

Icon to display in file manager, menus, etc. If the name is an
  absolute path, the given file will be used. If the name is not an
  absolute path, the algorithm described in the Icon Theme
  Specification will be used to locate the icon.

and here:

Icon field is the icon that should be used by the launcher and
  represents the application. All icons that are under the directory
  /usr/share/pixmaps don't need to have their full path specified, but
  their filename without the extension. For example, if the icon file is
  /usr/share/pixmaps/wallch.png, then the Icon field should be just
  'wallch'. All other icons should have their full path
  specified.

More information
In a .desktop file:
In the Icon= line, you are allowed to use spaces:
Icon=/home/jacob/Thema/icon/some folder/some icon.png

is fine.
However
In the Exec= line, you are not allowed to use spaces, unless in case of an argument. In all other cases, you need to quote the path steps with a space:
Exec=/home/jacob/Bureaublad/some folder/application

will fail, while
Exec="/home/jacob/Bureaublad/some folder/application"

or 
Exec=/home/jacob/Bureaublad/"some folder"/application

will work fine

A:

In short, .desktop file's Icon= path understands absolute paths, but not tilde expansion, because of the specification which defines how .desktop files are supposed to work.
Tilde expansion

Where you would see tilde (~) expansion to the $HOME environment variable is often for example in bash, which is the usual login shell you interact with on the command prompt
bash, and other POSIX-compliant shells, do tilde-to-$HOME expansion consistent with POSIX specification for shells

.desktop files

However, a .desktop file is not the same thing as a shell, it is a plain text configuration file so it would not necessarily work the same way, even if .desktop files and shells can both be found on Linux
how a .desktop's file is supposed to work, is defined in Freedesktop's Desktop Entry Specification

Desktop Entry Specification, regarding Icons, says:

If the name is an absolute path, the given file will be used.

This is why you were able to use absolute paths, since it is covered by the spec

If the name is not an absolute path, the algorithm described in the Icon Theme Specification will be used to locate the icon.

When we check the Icon Theme Specification, there is nothing that says it has to follow POSIX's tilde expansion at all.
Summary
Thus, due to the Freedesktop specifications regarding .desktop's Icon= setting, absolute paths are supported, but as you found, POSIX tilde-to-$HOME expansions are not.

