The issue you see is the usual “TeX ignores spaces after control sequences”, however here it can't be fixed as you would when producing typeset output. In that case, any method that separates the space character from the control sequence (and will produce a space, of course) in the input will work:
\FirstName{} \LastName
\FirstName{ }\LastName
{\FirstName} \LastName
\FirstName\ \LastName
\FirstName\space\LastName
\@firstofone{\FirstName} \LastName % assuming the usual definition of \@firstofone
however here you are in an expansion-only context, and in this case you need something a space token or something that expands to a space token, while separating it from the control sequence. The methods with braces and with control space don't work here because braces don't expand, so they are left untouched by \edef's expansion. They do work when typesetting because in that context they (form a group and) disappear. The control space \ also doesn't expand, so \edef leaves it alone.
Both Plain and LaTeX define \def\space{ }, so you can do:
\edef\PictureName{\FirstName\space\LastName}
which, in the expansion-only context of \edef, will expand \FirstName (without even looking at \space just yet), and then it will expand \space to a space token, and then expand \LastName.
The \@firstofone method will also work because \@firstofone also works by (one) expansion:
\edef\PictureName{\@firstofone{\FirstName} \LastName}
this will expand \@firstofone{\FirstName}, which becomes \FirstName, which then expands as well. Then the space token is seen, and then \LastName is expanded. See this related question: Conversion of space characters into space tokens
\edef\PictureName{\FirstName\space\LastName}– Phelype Oleinik Nov 27 '19 at 13:08