Yes. In any language it is possible to create a function that returns different results based on whether the function uses pass-by-value or pass-by-reference. This shouldn't be used in day-to-day programming, but it is useful for testing the compiler, testing an API, etc. Basically, call your function with a variable that is initialized to some value, and in the function, assign a different value to the parameter. In the caller, check the value of the parameter after you've invoked the function to see if the mutation has had a visible effect. Note that I am assuming that you've written both the caller and the callee.
If you want to check some arbitrary function that you don't have control over, you can use function overloading to tell you what type of parameter passing scheme is in use:
bool IsPassingByReference(int (*func)(int)) { return false; }
bool IsPassingByReference(int (*func)(int&)) { return true; }
As has been noted, this is applicable to C++ only. (C has pointers, but no references).